load several (one after another ) .mat Files via a For-Loop Job
    18 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Trier87
 le 17 Jan 2013
  
    
    
    
    
    Commenté : Veena Chatti
 le 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 commentaires
Réponse acceptée
  Sarah Wait Zaranek
    
 le 17 Jan 2013
        
      Modifié(e) : Jan
      
      
 le 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 commentaires
  Image Analyst
      
      
 le 3 Jan 2020
				
      Modifié(e) : Image Analyst
      
      
 le 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
 le 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!
Plus de réponses (1)
  Image Analyst
      
      
 le 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 commentaires
Voir également
Catégories
				En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




