截断后在dir中保存多个矩阵

时间:2016-01-21 02:02:46

标签: matlab matrix

我正在使用此代码,基于之前的一些用户示例。我试图在指定的目录中读取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

1 个答案:

答案 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