我怎样才能在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);
这行代码如下
- 获取与部分文件名匹配的所有文件的列表,如结构数组(h / t Shai)
- 对于该数组中的每个元素,执行原始post中的
importdata
调用。 - 将所有输出编译成一个单元格数组。