使用dir命令+循环
a=dir直接得到对应的结构体
a.name得到相应的文件名
我需要利用MATLAB同时对40个数据文件进行数据处理,各个数据文件格式相似,处理方法相同。也就是说,用于处理这些数据文件的MATLAB程序是基本一样的,只有读入的文件名不同,其它地方都一样。
一开始我编了一个命令,用于处理这些数据,读入文件的文件名设为a.txt,将第一个数据文件改名为a.txt后进行运算,完毕后再将第二个文件改名为a.txt,重复这个过程40次。
后来我将这个程序复制、粘贴40次,成为一个大程序,第一次粘贴后将读入文件的文件名改为a1.txt,下一个改为a2.txt,以后依此类推,直到,然后将40个数据文件的名字如法照该。最后运行MATLAB程序,一次就把40个数据文件都处理了。
再后来我觉得程序里的输入文件的文件名离得太远,改一次很不方便,要翻遍整个程序。而且,一模一样的程序应该用循环来实现,看起来容易看懂,用起来运算速度也快。
最后的办法是把所有文件名放在了一个矩阵里头,用了一个for循环,每循环一次调用一个字符串作文件名。下面以四个文件为例:
a=['a1.txt'
'a2.txt'
'a3.txt'
'a4.txt'];      %如果是,则前面的都要在最后加空格,因为矩阵要保证每一列的宽度一致
x=1;                      %给x赋初值为1
for  i=1:4              %四个数据文件,所以进行四次循环
fid=fopen(a(x,1:6),'r')  %将矩阵a的第一行(即字符串a1.txt)作为输入文件的文件名。因为每一个字符都被
认为是一列,所以读取1至6列才是完整的名称,a(x,1)读出来的值只是一个字母a
x=x+1;                      %将x的值自动加一,下次循环的时候就会读取第二列的值,即打开文件a2.txt
……
……
……                          %进行数据的处理
end
利用上面的办法,程序很简洁,效果很好。如果换了下一批数据文件,只需要改动矩阵a的内容即可。
给多个文件命名的原理与此相同,不再赘述。
另一种方法更简便,介绍如下:
a=zeros(4,1)
for i=1:4
a(i,1)=load(strcat('a',num2str(i),'.txt'));
end
a=zeros(4,1)
for i=1:4
s=strcat('a',num2str(i),'.txt');
a(i,1)=load(s);
end
a=zeros(4,1)
for i=1:4
s=strcat('a',num2str(i),'.txt');
a(i,1)=importdata(s);
matlab数组赋值
end
注:我是在每个记事本文件里放了一个数。放东西多的时候不能这样赋值给a,但是可以这样读取数据。
num2str()命令是将数值变为字符串;
strcat()是将多个字符串合并,字符串中间要用逗号(,)隔开;
load()命令
和importdata()命令均可用来读取数据;
可以从其它文件夹读入数据,如将s=strcat('a',num2str(i),'.txt');改为s=strcat('F:\a',num2str(i),'.txt');是可以的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。