这是我在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
提前致谢!