【发布时间】:2014-04-02 19:50:12
【问题描述】:
我有一个名为 sacfile 的结构,其中包含各个站的数据 (sta1-sta6)。 sacfile 进一步细分为天增量(sacfile.day,每个站),并进一步细分为每天的小时增量(sacfile.day.hour)。我想循环遍历每一天,然后遍历每个站点比较的每个小时(即,第 032 天循环遍历 sta1 hr 1 与 sta2 hr 1、sta3 hr 1、sta4 hr1、sta5 hr1、sta6 hr 1 等等等到那天的所有时间,然后移到第二天,等等。你明白了。站是在 sacfile.sta 中定义的。有人对我如何简单地做到这一点有任何建议吗?
*我只想循环在同一天和同一小时的车站,然后转到下一个天和小时。我不想交叉比较不同的日期和时间。这对于循环很重要。
我尝试了以下方法:
for i = 1:length(sacfile)
for j = 1:length(sacfile(i,1).day)
for h = 1:length(sacfile(i,1).day.hour)
但这似乎在每个小时点循环。这是否可行,我如何确保它循环通过正确的日子,即 sta1 的第 1 天与 sta2 的第 1 天相同。
这是其中一种结构的示例:
name: '2013.032.00.00.00.0000.TA.POKR..BHE.sac'
date: '31-Mar-2014 12:25:33'
bytes: 11949036
isdir: 0
datenum: 7.3569e+05
net: 'TA'
sta: 'POKR'
loc: ''
comp: 'BHE'
day: [1x1 struct]
data: [2987101x1 double]
time: [1x2987101 double]
header: [1x1 struct]
唯一相关的是 net、sta、loc、comp、day 和 data。 net、sta、loc、comp 是文件的关键标识字段。名称是文件的名称。 Day 将数据分解为几个小时。有道理?
【问题讨论】:
-
语言?尝试?错误?
-
很抱歉我编辑包含 matlab。到目前为止,我只是把它分成了几天和几小时。我正在努力寻找循环它们的最佳方式。我尝试过的每一种方法似乎都没有正确地做到这一点。我试过了:
-
似乎您想将“小时”循环置于“日”循环之外,但显然这不适用于您现在的数据结构方式。
-
您的结构中还有其他字段吗?展示一个小例子。
-
您需要在内部
for循环中使用if语句来检查两个结构的天数和小时数是否相等,如果条件为真则进行处理,否则跳过。跨度>
标签: matlab for-loop data-structures