load multiple files with a condition on the file name
2 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Jos (10584)
2011-3-26
dfBASF = dir('*BASF.mat') ;
for F = {dfBASF.name}
curF = F{:} ; % current file
disp(curF)
movefile (curF, fullfile('BASF',curF) ) ; % test this first!!
end
df = dir('*.BIOG.mat') ;
% ... etc ...
2 个评论
Jos (10584)
2011-3-27
You could (and should) modify the input to DIR to get your requirements! Something like '*BASF.DE.mat' might do ...
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!