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

虽然有很多更好的方法可以做到这一点