我在检测数据集中的快速向上移动曲线时遇到了一些问题。
数据集示例:
6500(整数值),2013-04-16 15:31(日期时间值或以毫秒为单位的时间戳)
6480, 2013-04-16 15:31
6480, 2013-04-16 15:32
6450, 2013-04-16 15:33
6430, 2013-04-16 15:34
6410, 2013-04-16 15:35
...
2110, 2013-04-26 1:56
这个数据数组形成了一个图表:
我需要帮助来检测图中异常快速的跳跃,例如 - 检测涂成黑色的线的起点和终点:
最佳解决方案,在我看来 - use gradients 或本地 maxima and minima ,但我不明白如何应用它来解决这个问题。
如果有任何提示或任何代码算法(任何语言),我将不胜感激,谢谢。
最佳答案
你所有的快速跳跃都是向上跳跃而不是向下跳跃。如果您的数据集是 0<=i<n
的 V[i] ,您只需要查看是否 V[i] - V[i-1] > T 其中 T = 某个阈值来检测跳跃。所以这都是关于如何设置T的问题。我建议阈值也会变化,所以它是T[i]而不是固定数字T。例如,你可以使T[i] = M C[i]其中 C[i] 是最近变化的指数加权移动平均值,即
C[i] = C[i-1] * (1 - W) + W * Abs(V[i-1] - V[i-2])
在这里,如果 W=1,则 C[i] 始终是最近的变化,但是当 W<1 时,它会对最近的变化进行平均,最近的变化具有最大的权重。乘数 M 可以是例如2,这意味着您正在寻找最近变化的指数加权移动平均线的两倍跳跃。按照这些思路应该可以工作:-)
关于c# - 检测图中异常快速的跳跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508458/