MATLAB如何自动读取多个文件

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(当前工作目录)的内容,而不管您如何调用文件。这使得加载文件变得更容易,因为

我想从不同的数据文件中绘制一些3D图形。例如,我正在使用

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