【发布时间】:2012-05-24 22:21:46
【问题描述】:
我有想要简化的时间序列数据(减少点数,同时让图形保持相同的形状)。例如,如果我有这个数据集:
Time: 1, Value: 5
Time: 6, Value: 5
Time: 11, Value: 5.1
Time: 12, Value: 5
Time: 20, Value: 5.2
Time: 22, Value: 6
Time: 23, Value: 10
容差为 0.5 的简化版本类似于:
Time: 1, Value: 5
Time: 20, Value: 5.2
Time: 22, Value: 6
Time: 23, Value: 10
我知道用于 GIS 数据的 Douglas–Peucker 算法,但我不确定如何将其应用于时间序列数据,因为轴具有不同的单位。如果我能在数据库中完成这一切,那就太棒了。
【问题讨论】:
-
这不是同一个形状,是吗?例如,如果它是一个方波
1,0 2,0 3,0 4,0 5,0 6,10,而您将其更改为1,0 6,10,您将制作一个斜率;您需要使两个端点保持恒定的斜率。 -
@Phrogz 是的,但如果你有 1,0 5,0 6,10 它会是相同的形状。理想情况下会有一点宽容,这就是我在上面的示例中过滤掉 3、5.1 的原因。
标签: ruby-on-rails ruby performance postgresql graph-theory