MATLAB如何自动读取多个文件
我想从不同的数据文件中绘制一些3D图形。例如,我正在使用MATLAB如何自动读取多个文件,matlab,graph,plot,matlab-figure,automatic-properties,Matlab,Graph,Plot,Matlab Figure,Automatic Properties,我想从不同的数据文件中绘制一些3D图形。例如,我正在使用 fid = fopen('SS 1.dat','r'); 读取第一个文件,然后绘制图形。如何设置程序自动将名称更改为“SS 2.dat”?对于第十个文件,名称变为“SS 10.dat”,它比第一到第九个文件少一个空格(即SS和10之间只有两个空格)。如何设置程序以进行调整?谢谢。使用: 与这里的其他解决方案不同,dir的美妙之处在于,您可以在一行中获取pwd(当前工作目录)的内容,而不管您如何调用文件。这使得加载文件变得更容易,因为
fid = fopen('SS 1.dat','r');
读取第一个文件,然后绘制图形。如何设置程序自动将名称更改为“SS 2.dat”?对于第十个文件,名称变为“SS 10.dat”,它比第一到第九个文件少一个空格(即SS和10之间只有两个空格)。如何设置程序以进行调整?谢谢。使用:
与这里的其他解决方案不同,
dir
的美妙之处在于,您可以在一行中获取pwd(当前工作目录)的内容,而不管您如何调用文件。这使得加载文件变得更容易,因为动态文件名没有任何麻烦。下面的代码显示了一种惰性方法,可以打印您提到的从1到999的名称:
prefix = 'SS';
for n = 1:10
if n == 10
filename = [prefix ' ' num2str(n) '.dat'];
else
filename = [prefix ' ' num2str(n) '.dat'];
end
fid = fopen(filename, 'r');
...
end
for ii=1:999
ns = numel(num2str(ii));
switch ns
case 1
fname = ['ss ' num2str(ii) '.dat'];
case 2
fname = ['ss ' num2str(ii) '.dat'];
case 3
fname = ['ss ' num2str(ii) '.dat'];
end
end
另一种方式:
是在文件名格式中使用反斜杠字符,如下所示:
fstr = 'ss ';
for ii = 1:999
ns = numel(num2str(ii));
for jj = 1:ns-1
fstr = [fstr '\b'];
end
ffstr = sprintf(fstr);
fname = [ffstr num2str(ii) '.dat'];
disp(fname);
end
有很多更好的方法可以做到这一点,尽管
dir
是正确的方法,但您会遇到错误。它应该是dir('*.dat')代码>和fopen(文件名(ii).name,'r')代码>@IKavanagh谢谢,在我的火车离开之前我有大约40秒的时间来快速输入这个,我现在将展开。
fstr = 'ss ';
for ii = 1:999
ns = numel(num2str(ii));
for jj = 1:ns-1
fstr = [fstr '\b'];
end
ffstr = sprintf(fstr);
fname = [ffstr num2str(ii) '.dat'];
disp(fname);
end