for mat + matlab中的结构分配

时间:2013-12-28 21:57:35

标签: matlab for-loop data-structures

这是我在Matlab工作的一个问题。

我正在遍历一系列* .ALL文件,并通过分隔符'来剥离字段名称。'。第一个字段是网络,第二站名称,第三个位置代码和第四个组件。我根据文件的数量预先分配我的结构(3)我运行的这个例子是一个3x3x3结构,我想定义为struct(station,loc code,component)。您可以在下面的代码示例中看到这些定义。

我想遍历站点,loc代码和组件并在结构中填充它们的值。唯一的问题是出于某种原因,我已经定义了循环,它实际上不止一次地循环遍历文件。我只想循环遍历每个文件一次并从中提取station,comp和loc代码并将其放入结构中。因为它不止一次地循环遍历文件,所以需要花费10分钟来填充结构。这根本不是很有效。有人可以为我指出罪魁祸首或告诉我我做错了什么吗?

以下是我的代码:

     close all;
     clear;
     [files]=dir('*.ALL');

     for i = 1:length(files) 
         fields=textscan(files(i).name, '%s', 'Delimiter', '.');
         net{i,1}=fields{1}{:};
         sta{i,1}=fields{1}{2};
         loc{i,1}=fields{1}{3};
         comp{i,1}=fields{1}{4};
         data = [];
         halfhour(1:2) = struct('data',data);
         hour(1:24) = struct('halfhour',halfhour);
         day(1:366) = struct('hour',hour);
         PSD_YE_DBT(1:length(files),1:length(files),1:length(files)) =     
         struct('sta','','loc','','comp','','allData',[],'day',day);
     end
     for s=1:1:length(sta)
        for l=1:1:length(loc)
          for c=1:1:length(comp)
             tempFileName = strcat(net{s},'.',sta{s},'.',loc{l},'.',comp{c},'.','ALL');
             fid = fopen(tempFileName);
             PSD_YE_DBT(s,l,c).sta = sta{s};
             PSD_YE_DBT(s,l,c).loc = loc{l};
             PSD_YE_DBT(s,l,c).comp = comp{c};
          end
         end
        end

我正在使用的三个文件的示例文件名是:

XO.GRUT.--.HHE.ALL 
XO.GRUT.--.HHN.ALL 
XO.GRUT.--.HHZ.ALL

提前致谢!

0 个答案:

没有答案