我正在使用此代码,基于之前的一些用户示例。我试图在指定的目录中读取ascii文件,只读取每个文件的前80行数据(最初总共1020行和2列)。 这个例程不会给我错误,但我不清楚数据是如何存储在MATLAB中的,以及我如何操作我刚刚创建的80行的每个新矩阵。我是否可以为每个.asc文件提供现在被截断的新文件名或矩阵赋值?接下来我需要在每个文件中的那80行上执行一个peakfinding算法,所以我需要将它们分别存储起来。谢谢!
folder = fullfile('Users', ...'Documents', 'MATLAB');
f = dir(fullfile(folder, '*.asc'));
matrices = struct();
for ii = 1 : numel(f)
name = fullfile(folder, f(ii).name);
O = dlmread(name);
matrices.(f(ii).name) = O(1:80,:);
end
答案 0 :(得分:0)
这不起作用。
循环循环目录中的所有文件。每个文件被读取到临时矩阵O,从该矩阵O只有前80行存储到结构矩阵中。 但是:矩阵结构将使用相应的asc文件的完整文件名引用,即blabla.asc
Matlab结构由点引用,因此它禁止结构的字段名称中的点。
将您的代码更改为:
f = dir(fullfile(folder, '*.asc'));
matrices = struct();
for ii = 1 : numel(f)
name = fullfile(folder, f(ii).name);
O = dlmread(name);
prf_sff = strsplit(f(ii).name, '.')
matrices.(prf_sff{1}) = O(1:80,:);
end
然后你可以引用包含前80行blabla.asc的矩阵:
matrices.blabla