我想从不同的数据文件中绘制一些3D图形。例如我正在使用
fid = fopen('SS 1.dat','r');
读取第一个文件,然后绘制图形。如何设置程序将名称更改为' SS 2.dat'自动?同样对于第十个文件,名称变为' SS 10.dat'它有一个空间少(即SS和10之间只有两个空格),然后是第一到第九个文件。如何设置程序来调整?谢谢。
答案 0 :(得分:3)
使用dir
:
filenames = dir('*.dat'); %//gets all files ending on .dat in the pwd
for ii =1:length(filenames)
fopen(filenames(ii),'r');
%//Read all your things and store them here
end
dir
的优点与此处的其他解决方案相反,无论您如何调用文件,都可以在一行中获取pwd(当前工作目录)的内容。这样可以更轻松地加载文件,因为您没有任何动态文件名的麻烦。
答案 1 :(得分:2)
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
答案 2 :(得分:2)
以下代码显示了一种从您提到的名称从1到999打印的惰性方法:
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
有很多更好的方法可以做到这一点