【问题标题】:Aggregate/Sampling Ultra high frequency time series data in Matlab?在 Matlab 中聚合/采样超高频时间序列数据?
【发布时间】: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


【解决方案1】:

在 R 中,您可以考虑使用 POSIXct 类作为您的时间戳。

在?DateTimeClasses 我们读到了

“POSIXct”类表示自 1970 年初(UTC 时区)以来的(有符号)秒数,作为数字向量。

还要注意参数:

digits 计算的有效位数:应该足够高以准确表示最不重要的时间单位。

请注意,significant 位的默认值为 15。由于小数点前有 10 位,例如 as.numeric(as.POSIXct(Sys.time())),因此小数点后会留下 5,或1e-5 秒精度,这可能不够,所以也许使用digits=18 或20 等作为缓冲。

要将您的观察结果汇总到最接近的 1e-5 秒(10 微秒),您可以使用 ?round.POSIXt,如下所示:

round(x, units = "secs", digits=5)

x 是一个向量,所以你不需要 for 循环。

【讨论】:

  • 嗨,@C8H10N4O2,你在R中提到的非常好,你知道Matlab中类似的功能吗?
  • 对不起@GeekCat 但不,从学校开始多年没有使用matlab
  • @GeekCat 您可以使用 Matlab 中的 posixtime 函数来使用 posix 来表示您的时间序列。
猜你喜欢
  • 2012-01-30
  • 2020-12-28
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 2018-12-04
  • 1970-01-01
相关资源
最近更新 更多