load several (one after another ) .mat Files via a For-Loop Job
조회 수: 69 (최근 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에서 Data Distribution Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!