我的目录中有100个ASCII文件,其名称如下:
int_001.ASC
int_002.ASC
int_003.ASC
。
。
。
int_099.ASC
int_100.ASC
我必须使用importdata在MATLAB中导入它们,这应该如下工作:
A = importdata('int_001.ASC', ' ', 9)
x = A.data(:,1)
y = A.data(:,2)
我的问题是:如何避免写{100}次importdata
?有没有办法只写第一个字符串,然后上传所有数据?
由于
答案 0 :(得分:10)
fls = dir( 'int_*.ASC' );
for fi=1:numel(fls)
A{fi} = importdata( fls(fi).name, ' ', 9 );
% ...
end
<强>更新强>
您可以使用string formatting根据数字读取文件:
for fi=1:100
A{fi} = importdata( sprintf('int_%03d.ASC', fi ), ' ', 9 );
% ...
end
答案 1 :(得分:4)
您可以在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
答案 2 :(得分:2)
如果你想稍微过分:
alldata = arrayfun(...
@(dirEntry)importdata(dirEntry.name, ' ', 9), ...
dir('int_*.ASC'),...
'uniformoutput',false);
此行执行以下操作
importdata
调用。