changing file path in a loop

Hi All,
I am trying to import data from different folders in a loop. I have the data in a folder called "Spring 2016 DATA", inside this folder are individual folders for each subject. So there is a "subject1", "subject2".....etc.
I would like to create a loop such that it would go to the subject 1 folder and import that data. Then after it finishes analysis, it would start again and import subject 2 and so on.
My problem is how would I do that using the cd command. Right now I am trying to do the following
cd('C:\Documents\MATLAB\Spring 2016 DATA\..........');
As you can see, I do not know what I can do to replace the ........ and get the rest of the path. I've tried a lot of different options with an error every time. When I place the .........with folder1, it works but I want to change the folder name every time it goes through the loop. Sounds too easy for anyone who knows what they are doing.
Any suggestions would be appreciated.
Thanks in advance.
Mostafa

Answers (2)

Jan
Jan on 19 Mar 2016
Edited: Jan on 19 Mar 2016
Prefer absolute file names instead of changing the current directory:
BasePath = 'C:\Documents\MATLAB\Spring 2016 DATA';
DirList = dir(BasePath);
DirList = DirList([Dirlist.isdir]); % Folders only
for iDir = 1:numel(DirList)
aDir = fullfile(BasePath, DirList(iDir).name);
fprintf('Processing: %s\n', aDir);
...
end

4 Comments

Hi Jan,
I ran the piece of code above and i got an error in the command window......Undefined variable "Dirlist" or class "Dirlist.isdir".
It stopped by the third line..
Thanks in advance for the help.
Hypolite
Hi Jan,
Do not worry i found out wat was wrong
Hypolite
Should have been DirList, not Dirlist. Anyway, try this more robust version:
BasePath = 'C:\Program Files\MATLAB\R2018a'; % Wherever you want
% Warn user if there is no such folder.
if ~exist(BasePath, 'dir')
message = sprintf('This folder does not exist:\n%s', BasePath);
uiwait(errordlg(message));
return;
end
% Get a list of all files, including folders.
DirList = dir(BasePath);
% Extract only the folders, not regular files.
DirList = DirList([DirList.isdir]); % Folders only
% Get rid of first two folders: dot and dot dot.
DirList = DirList(3:end);
% Warn user if there are no subfolders.
if isempty(DirList)
message = sprintf('This folder does not contain any subfolders:\n%s', BasePath);
uiwait(errordlg(message));
return;
end
% Count the number of subfolders.
numberOfFolders = numel(DirList);
% Loop over all subfolders, processing each one.
for k = 1 : numberOfFolders
thisDir = fullfile(BasePath, DirList(k).name);
fprintf('Processing folder %d of %d: %s\n', ...
k, numberOfFolders, thisDir);
end
Thanks Image Analyst...
That piece of code makes life alot easier.
Hypolite

Sign in to comment.

Thanks, These codes are very helpful.

Categories

Find more on Convert Image Type in Help Center and File Exchange

Products

Tags

Asked:

on 19 Mar 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!