我在我的目录中的所有命名如下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
? 有没有只写第一个字符串,然后让所有的数据上传的方法吗?
谢谢
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
您可以使用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
如果你想落水借此一点点:
alldata = arrayfun(...
@(dirEntry)importdata(dirEntry.name, ' ', 9), ...
dir('int_*.ASC'),...
'uniformoutput',false);
这条线路将执行以下操作
- 获取匹配部分文件名中的所有文件的列表,作为结构的阵列(H / T晒)
- 对于数组中的每个元素,执行
importdata
从原来的职位电话。 - 编译所有的输出入单元阵列。
文章来源: How can I load 100 files with similar names and/or string in just one step in MATLAB?