我有以下格式的时间序列:
time data value
733408.33 x1
733409.21 x2
733409.56 x3
etc..
数据运行时间约为 2008 年 1 月 1 日至 2010 年 12 月 31 日。我想将数据分成每月长度的列。
例如,第一列(2008 年 1 月)将包含相应的数据值:
(first 01-Jan-2008 data value):(data value immediately preceding the first 01-Feb-2008 value)
然后是第二列(2008 年 2 月):
(first 01-Feb-2008 data value):(data value immediately preceding the first 01-Mar-2008 value)
等等...
我一直在考虑但不知道如何组合的一些想法:
- 将所有序列时间数字(例如 733408.33)转换为字符串
datestr
- 用于
strmatch('01-January-2008',DatesInChars)
查找对应于 2008 年 1 月 1 日的行的索引 - 棘手的部分(?)
TransformedData(:,i) = OriginalData(start:end)
:?end = strmatch(1) - 1
和start = 1
。然后start
在循环结束时更改为strmatch(1)
,然后再次运行第 2 步以找到下一个“起始索引”并更改end
为“新”strmatch(1)-1
?
优化速度会很好;我将把它应用到采样约 200 万次的数据上。
谢谢!