load several (one after another ) .mat Files via a For-Loop Job
    21 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:
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 Comments
Accepted Answer
  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
    end
end
4 Comments
  Image Analyst
      
      
 on 3 Jan 2020
				
      Edited: Image Analyst
      
      
 on 3 Jan 2020
  
			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
 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.
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 Comments
See Also
Categories
				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!



