【发布时间】:2016-06-22 01:23:49
【问题描述】:
我有一个艰巨的任务要解决。 我目前正在处理频率非常高的时间序列数据。数据以毫秒/微秒为单位测量。它们的间距不相等。
注意
1 小时 = 60 分钟 = 3600 秒。
1 秒 = 1,000 毫秒 = 1,000,000 微秒
这就是为什么我说我的数据是超高频。 Matlab中的时间序列对象,据我所知,只支持二级数据。我真的需要一些转换我的时间序列,例如 10 毫秒数据或 100 毫秒数据。
这意味着,例如,如果我希望我的时间序列以 10 毫秒为单位,则原始数据仅在 5 毫秒、6 毫秒和 12 毫秒有数据点。
我将6毫秒作为最近的数据点,将其作为10毫秒的数据。
有时候我需要总结一下数据区间,但目前不是很重要。
我复制一些数据如下:
TimeStamp=
[66846720;67567616;67567617;67567618;67567619;67567620;67567621;67633152;...
67633153;67633154;67633155;67633156;67633157;67633158;67633159;67633160;...
67633161;67633162;482410496;495583232;495583233;807206912;1422721024;...
1596325888;1766457344];
Value = [2094.75;2094.75;2094.75;2094.75;...
2094.75;2094.75;2094.75;2094.75;2094.75;...
2094.75 ;2094.75 ;2094.75;2094.75;2094.75;...
2094.75 ;2094.75 ;2094.75;2094.75;2094.5;...
2094.75 ;2094.75 ;2094.5 ;2094.5 ;2094.75;2094.5]
TimeStamp 以毫秒和 UTC 时间
为单位我这样做的方式是生成一系列说 m=10 毫秒, 10,20,30,40.....
然后我用一个大的for循环每10毫秒找到最近的数据点,效率非常低,通常需要很长时间才能运行...
请发表任何建议或好的方法,我们将不胜感激
如果有现有的包,其他语言也会很好。
【问题讨论】:
-
您有没有想过将数据存储在支持毫秒精度和不规则时序数组的时序数据库中?
-
@SergeiRodionov 我想在 Matlab 中一站式完成,谢谢。你有什么推荐的数据库吗?
-
对这个用例没有特别的建议,但是在维基百科en.wikipedia.org/wiki/Time_series_database上有一个数据库列表。您可能想检查哪些提供了 matlab 客户端以简化集成。
-
你能举一个输入和预期输出的小例子吗?
标签: r matlab dataframe time-series sampling