load several (one after another ) .mat Files via a For-Loop Job
232 views (last 30 days)
Show older comments
Trier87 on 17 Jan 2013
Commented: Veena Chatti on 12 Jan 2020
Hello, i have a Program that is in the Folder-Directory: Main. And i have some several numbered .mat-Files with the Variable Buff that are in the Folder Directory Main/Combination:
...and so on
My Program should load the first combinations_1.mat and to something:
for I = 1:size(Buff,1)
% calculate some stuff
After the Loop is done it should load combinations_2 and start the Loop again
My Idea is:
d = dir('*.mat'); % only looking for .mat-Files
Number_mat = length(d); % number of .mat-Files
load(['combinations_' num2str(i) '.mat'])
But i no idea how i can this combine with the For-Loop. Hope everybody understand my aim, big thanks
Sarah Wait Zaranek on 17 Jan 2013
Edited: Jan on 17 Jan 2013
Unless I am missing something, I think the easiest thing would be to do a nested for loop.
for ii = 1: Number
load(['combinations_' num2str(ii) '.mat'])
for jj = 1:size(Buff,1)
% calculate some stuff
Veena Chatti on 12 Jan 2020
Thanks for your suggestion. I will test it soon.
Someone from MATLAB, Pujitha Narra, posted an answer on the question I asked, their solution worked really well!
More Answers (1)
Image Analyst on 17 Jan 2013
You can use dir() to get a list of the filenames. Then you should check that the variable is actually in the mat file. Try this. It's a fairly robust adaptation of code already in the FAQ.
myFolder = 'Main/combinations'; % May need to correct this.
errorMessage = sprintf('Error: The following folder does not exist:\n%s', myFolder);
filePattern = fullfile(myFolder, 'combinations*.mat');
matFiles = dir(filePattern);
for k = 1:length(matFiles)
matFilename = fullfile(myFolder, matFiles(k).name)
matData = load(matFilename); % Retrieves a structure.
% See if Buff actually exists in the data structure.
hasField = isfield(matData, 'Buff');
% Alert user in popup window.
warningMessage = sprintf('Buff is not in %s\n', matFilename);
% It's not there, so skip the rest of the loop.
continue; % Go to the next iteration.
% If you get to here, Buff existed in the file.
Buff = matData.Buff; % Extract the Buff from the structure.
for row = 1 : size(Buff,1)
% Calculate some stuff
Find more on Loops and Conditional Statements 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!