【相关推荐】
前段时间用MATLAB处理txt文件时遇到了一个问题,由于txt文件太多因此需要做成循环来依次处理500(实际上有5000多个)多个txt文件。最主要的问题是fopen的参数是不能含有变量的而且它又不能一次性处理多个文件。所以要想循环处理多个txt文件还是必须在文件名上进行改变。
另外首先txt文件名必须是连续的能循环读取的,所以首先使用好压对500多个txt文件进行批量命名,这样有助循环:
对于含变量的文件名此处提出的方法是用字符串数组来解决。
如下代码:
clear all;
a=3;
b=1;
testTime=[];
startTime1=[];
startAE1=[];
for c=100:1746
file_name=[num2str(a) '_' num2str(b)'_' num2str(c)'.txt'];%×¢ÒâÖмäÓпոñ
fileOut=fopen(file_name);
y=[];
line=0;
while ~feof(fileOut)
tLine=fgetl(fileOut);
line=line+1;
if line==11
testTime=[testTimestr2double(tLine(18:33))];
end
if line==12
continue;
end
if double(tLine(2))>=48&&double(tLine(2))<=57
%fprintf(fileIn,'%s\r\n',tLine);
y=[y str2double(tLine)];
continue;
end
end
如上第8行代码:file_name=[num2str(a) '_' num2str(b)'_' num2str(c)'.txt'];
file_name=[]是一个字符数组,其中一个字符元素都用’’括起来,每个元素之间用空格或,隔开,在matlab中执行上语句可以得到如下结果:
如上图所示,输出的结果file_name就成了完整的文件名,此时在file_name生成的语句中虽然带了变参数,但是生成后file_name中就不含变参数了而是一个成熟的字符串,然后带入fopen()中便可实现对文件名进行改变,从而循环处理多个不同文件。