load several (one after another ) .mat Files via a For-Loop Job
54 次查看(过去 30 天)
显示 更早的评论
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:
combinations_1.mat
combinations_2.mat
combinations_3.mat
...and so on
My Program should load the first combinations_1.mat and to something:
for I = 1:size(Buff,1)
% calculate some stuff
end
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
for i=1:Number
load(['combinations_' num2str(i) '.mat'])
end
But i no idea how i can this combine with the For-Loop. Hope everybody understand my aim, big thanks
0 个评论
采纳的回答
Sarah Wait Zaranek
2013-1-17
编辑:Jan
2013-1-17
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
end
end
4 个评论
Image Analyst
2020-1-3
编辑:Image Analyst
2020-1-3
I'd do
rows = ceil(sqrt(N*6));
outside the loop, then inside the loop do
subplot(rows, rows, (i-1)*6+j);
This will make a square matrix of plots and each plot will go into a separate, new plot in that matrix.
Veena Chatti
2020-1-12
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!
更多回答(1 个)
Image Analyst
2013-1-17
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.
if ~isdir(myFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s', myFolder);
uiwait(warndlg(errorMessage));
return;
end
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');
if ~hasField
% Alert user in popup window.
warningMessage = sprintf('Buff is not in %s\n', matFilename);
uiwait(warndlg(warningMessage));
% It's not there, so skip the rest of the loop.
continue; % Go to the next iteration.
end
% 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
end
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!