load several (one after another ) .mat Files via a For-Loop Job

107 ビュー (過去 30 日間)
Trier87
Trier87 2013 年 1 月 17 日
コメント済み: Veena Chatti 2020 年 1 月 12 日
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

採用された回答

Sarah Wait Zaranek
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
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
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
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

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by