c# - 检测图中异常快速的跳跃

标签 c# algorithm math

我在检测数据集中的快速向上移动曲线时遇到了一些问题。
数据集示例:
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/

相关文章:

algorithm - 家务调度算法

c++ - 特定长度的字符串的散列

arrays - 根据逻辑替换数组中的特定值

c# - 如何识别网站的内容语言,如英语、日语、中文等

c# - Xml 文档 - 参数上的 <see> 标记

C#相当于Python的traceback库

C# 当前上下文中不存在名称 ' ... '

java - HashSet 上的迭代成本还取决于支持映射的容量吗?

java - Math.IEEEremainder() 和 StrictMath.IEEEremainder() 之间的区别

perl - 在 Perl 中进行 base36 算术的最佳方法是什么?