MATLAB如何自动读取多个文件
MATLAB how to automatically read a number of files
我想绘制来自不同数据文件的多个 3D 图形。例如我正在使用
fid = fopen('SS 1.dat','r');
读取第一个文件,然后绘制图表。如何设置程序自动将名称更改为'SS 2.dat'?同样对于第十个文件,名称变为 'SS 10.dat',比第一个到第九个文件少一个 space(i.e.only 两个 space 在 SS 和 10 之间)。如何设置程序对此进行调整?谢谢。
使用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(当前工作目录)的内容。这样可以更轻松地加载文件,因为您不会为动态文件名带来任何麻烦。
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
以下代码显示了一种懒惰的方式来打印您提到的从 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
虽然有很多更好的方法可以做到这一点
我想绘制来自不同数据文件的多个 3D 图形。例如我正在使用
fid = fopen('SS 1.dat','r');
读取第一个文件,然后绘制图表。如何设置程序自动将名称更改为'SS 2.dat'?同样对于第十个文件,名称变为 'SS 10.dat',比第一个到第九个文件少一个 space(i.e.only 两个 space 在 SS 和 10 之间)。如何设置程序对此进行调整?谢谢。
使用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(当前工作目录)的内容。这样可以更轻松地加载文件,因为您不会为动态文件名带来任何麻烦。
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
以下代码显示了一种懒惰的方式来打印您提到的从 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
虽然有很多更好的方法可以做到这一点