我怎样才能在MATLAB的一个步骤中加载100个具有相似名称和/或string的文件?

我的目录中有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 ? 有没有办法只写第一个string,然后所有的数据上传?

谢谢

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

更新:
您可以使用string格式来根据它们的编号读取文件:

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

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

 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 

如果你想采取一点点过度:

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

这行代码如下

  1. 获取与部分文件名匹配的所有文件的列表,如结构数组(h / t Shai)
  2. 对于该数组中的每个元素,执行原始post中的importdata调用。
  3. 将所有输出编译成一个单元格数组。