load files containing part of a string in the file name and the load that file
    10 views (last 30 days)
  
       Show older comments
    
Hi everyone!
Im kind of new to matlab and I have the following problem: I have many files as .mat files with the following names, all in one folder. So what I want to do is to load all BASF files first and save them into a new BASF folder and then load all BIOG files and save them into a new BIOG folder.
data20091019_1BASF.DE
data20091020_1BASF.DE
data20091021_1BASF.DE
data20091020_1BIOG.DE
data20091022_1BIOG.DE
data20091101_1BIOG.DE
So far, this is what I have tried :
clear all
dirData=dir('*.mat');
filenames={dirData.name};
stringi=filenames;     
for k=1:length(dirData)
  stringi=filenames;
  basf=regexp(stringi,'^dataOut(\d+)_1BASF.DE_rek.mat$','match');
  basf(cellfun(@(basf) isempty(basf),basf))=[]; %get rid of empty cell arrays 
  biog=regexp(stringi,'^dataOut(\d+)_1BIOG_p.DE_rek.mat$','match');
  biog(cellfun(@(biog) isempty(biog),biog))=[];
  load(basf)
end
The problem is when I try to load all the files included in the basf cell array it says " Argument must contain a string". So I dont know how to make matlab load all the files that contain BASF or BIOG in ther file names. Could you please help me? Thank you so much! Lourdes
2 Comments
  Jan
      
      
 on 26 Mar 2011
				BTW: basf(cellfun(@(basf) isempty(basf),basf))=[]
Faster: basf(cellfun('isempty', basf))=[]
Answers (2)
  Walter Roberson
      
      
 on 27 Mar 2011
        You cannot load more than one file in a single command. Please see the FAQ on handling multiple files.
0 Comments
See Also
Categories
				Find more on Characters and Strings 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!