For loop to work on files in subfolders, while skipping the first file

2 views (last 30 days)
I want todecode my data with tdt on MATLAB. I have a folder, this folder has 70 sub-folders. Each of the 70 sub-folders has four .mat files. I want to work on the 2nd three files while loading the first spm.mat file separately. How do I write a for loop that runs through these files so that after working on the loading the first file, I can work on each of the other 3 files sequentially then move to the next folder. These 3 files start with the letters voi (e g voi 1, voi 2). I used the folowing and got an error message: Dot indexing is not supported for variables of this type.
folders = dir('parent folder path'); % Captures all contents of parent folder
folders = folders([folders(:).isdir]==1); % Filter to just folders
folders = folders(3:end); % Remove unnecessary '.' and '..' directories
for i = 1:length(folders)
path = [folders(i).folder,'\',folders(i).name]; % do work with path variable directing to each child folder.
end
end
  2 Comments

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 9 Jul 2022
Here's one way:
topLevelFolder = pwd; % Wherever you want.
filePattern = fullfile(topLevelFolder, '**/*.*');
folders = dir(filePattern); % Captures all contents of parent folder and subfolders
% Filter to just folders
itsAFolder = [folders.isdir]
folders = folders(itsAFolder);
% Get all folder names in a cell array.
folderNames = {folders.folder, folders.name}'
c = contains(folderNames, topLevelFolder)
folderNames = unique(folderNames(c))
% Loop over each folder and subfolder.
for k = 1:length(folderNames)
thisFolder = folderNames{k};
fprintf('Processing folder : "%s".\n', thisFolder)
% do work with path variable directing to each child folder.
end
  13 Comments

Sign in to comment.

More Answers (0)

Categories

Find more on Environment and Settings 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!