【发布时间】:2014-04-30 19:47:12
【问题描述】:
我试图在Date3 中找到索引,这是一个从 01/01/2008 到 01/31/2014 的日期数字列向量,已重复多次,与 day 匹配。我基本上想将 idx 组织成一个像idx{i} 这样的单元格数组,其中每个单元格都是一天(所以返回 Date3 等于天的所有索引,其中天是 01/01/2008 和 01/31/ 之间的一天之一2014. 最终,我想通过将我找到的索引应用于变量Data2 来提取每天的数据(重塑 Data2 以便代替数据集中的长列向量,我将有一个单元数组,其中每个单元格是一天的所有数据)
这是我一直在做的:
for day = datenum(2008,01,01):1:datenum(2014,01,31); % All the days under consideration
idx = find(Date3, day); % Index of where Date3 equals the day under consideration
Data_PM25 = Data2(idx); % Pull out the data based on the idx
end
示例:
如果Date3 看起来像下面这样(它实际上要大得多并且重复很多次)
733408
733409
733410
733411
733412
733413
733414
733415
733416
733417
733418
733419
733420
733421
733408
733409
733410
733411
733412
733413
733414
733415
733416
733417
733418
733419
733420
733421
我希望 idx 是
`idx{1}` = (1, 15) % Where 733408 repeats
`idx{2}` = (2, 16) % Where 733409 repeats
...
然后是Data2,看起来像:
[NaN]
[NaN]
[NaN]
[NaN]
[NaN]
[NaN]
[NaN]
[NaN]
[NaN]
[NaN]
'25.8'
'26.1'
'28.9'
'37.5'
'25.2'
'20'
'32.3'
'41'
'46.7'
'28.2'
'34.5'
'31.8'
'37.6'
'45.5'
'54.9'
'54.8'
'36.3'
'18.5'
现在看起来像
'Data_PM25{1}' = ([NaN], '25.2')
'Data_PM25{2}' = ([NaN], '20')
...
当然,实际输出会比仅仅两个匹配要长得多。
似乎正在发生的事情是,我将每个day 与Date3 进行比较,这是一个日期列表,所以我所有的日子都回来了。
这个问题扩展了上一个问题:Find where a value matches and concatentate into column vector MATLAB
【问题讨论】:
-
你应该参考你的第一个问题。
-
怎么样?只是链接到它?
-
是的,只需在开头说“除了我的 [previous question]”之类的内容并建立链接即可。