我如何可以加载100个文件具有类似名称和/或字符串在MATLAB只需一个步骤?(How can I

2019-07-21 09:50发布

我在我的目录中的所有命名如下100个ASCII文件:

int_001.ASC
int_002.ASC
int_003.ASC



int_099.ASC
int_100.ASC

我必须将它们导入MATLAB所有IMPORTDATA,这应该工作如下:

A = importdata('int_001.ASC', ' ', 9)
x = A.data(:,1)
y = A.data(:,2)

我的问题是:我怎么能避免写100次importdata ? 有没有只写第一个字符串,然后让所有的数据上传的方法吗?

谢谢

Answer 1:

fls = dir( 'int_*.ASC' );
for fi=1:numel(fls)
    A{fi} = importdata( fls(fi).name, ' ', 9 );
    % ...
end

更新:
您可以使用字符串格式化根据自己的数字阅读文件:

for fi=1:100
    A{fi} = importdata( sprintf('int_%03d.ASC', fi ), ' ', 9 );
    % ...
end


Answer 2:

您可以使用strcat函数在for循环中:

for k=1:n
    fileName = strcat('int_',num2str(k, '%03d'),'.ASC');
    A(k) = importdata(fileName, ' ', 9);
    x(k) = A(k).data(:,1);
    y(k) = A(k).data(:,2);
end


Answer 3:

如果你想落水借此一点点:

alldata = arrayfun(...
    @(dirEntry)importdata(dirEntry.name, ' ', 9), ...
    dir('int_*.ASC'),...
    'uniformoutput',false);

这条线路将执行以下操作

  1. 获取匹配部分文件名中的所有文件的列表,作为结构的阵列(H / T晒)
  2. 对于数组中的每个元素,执行importdata从原来的职位电话。
  3. 编译所有的输出入单元阵列。


文章来源: How can I load 100 files with similar names and/or string in just one step in MATLAB?