How to change the directory in the middle of a code
2 views (last 30 days)
Show older comments
Dear All MATLAB Users :-)
I have a critical question whose answer will save much time for me. Well basically the answer to my question will increase my ability of running as many as calculations I need during my sleep hours :-)
Assume on my desktop I have 4 folders ( directories ). Each of them is containing of many text files. The names of these directories are 1,2,3 and 4 respectively.
Now I have a code (m-file) located in each of these sub directories. Obviously once the code is run, all calculation will be performed on the files within that directory. What I basically seek for is a way to change the directory address after calculations for the files located in folder 1 finish. As a result, by running my code once, all of the folders will be covered one after another.
% THE CODE START RUNNING WITHIN THE DIRECTORY 1
for k = 1:50 % NUMBER OF TEXT FILES IN THE FIRST DIRECTORY
filename = sprintf('%d.txt',k);
A = load(filename);
% doing some calculations
print the output for k.txt
end
% THIS IS WHAT i WANT : Change the directory to the second one and again start running the code for the text files in the second folder.
for k = 1:10
filename = sprintf('%d.txt',k);
A = load(filename);
% doing some calculations
print the output for k.txt
end
Thank you in advanced. Best, HRJ
0 Comments
Answers (1)
Image Analyst
on 31 Aug 2015
Try it this way:
topLevelFolder = 'C:/myData/whatever'; % Forward slashes works with Windows too!
for f = 1 : 4
% Get the name of this folder.
thisFolder = sprintf('topLevelFolder/%d', f);
% See if it actually exists
if ~isdir(thisFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s', thisFolder);
uiwait(warndlg(errorMessage));
continue;
end
% Get a list of the .mat files in thisFolder.
filePattern = fullfile(thisFolder, '*.mat');
matFiles = dir(filePattern);
for k = 1:length(matFiles)
baseFileName = matFiles(k).name;
fullFileName = fullfile(thisFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
% Read it in
storedStructure = load(fullFileName);
% Do some operations.
end
end
3 Comments
Walter Roberson
on 31 Aug 2015
Edited: Walter Roberson
on 31 Aug 2015
The line
thisFolder = sprintf('topLevelFolder/%d', f);
should have been
thisFolder = fullfile(topLevelFolder, sprintf('%d', f));
See Also
Categories
Find more on File Operations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!