使用 CUSUM 算法估计步幅

信息处理 估计 振幅
2022-01-30 16:25:43

我使用 CUSUM 算法来检测数据中的步骤。基本上数据看起来是这样的,数据有一个恒定的幅度,然后有一个快速的变化或阶跃。例如,信号值为 1000 并迅速下降到 950 或 900。使用 CUSUM 算法,我可以轻松检测到这些变化以及它们发生的时间。但现在我还想自动化这些步骤的幅度估计。最终,我需要实时实现这一点(幅度估计可以容忍小的延迟)

我想尝试的一种解决方案是:

  • 在步骤之前取 N 个样本,在步骤之后取 N 个样本并减去各自的平均值。

有更好的解决方案吗?

编辑: - 例如,从 1000 到 900 的转换可能总共需要 10 个样本。

2个回答

您使用移动平均线的直截了当的想法实际上可能效果很好。既然你问“有没有更好的解决方案”,那我就必须问一下你所说的“更好”是什么意思。

变化点检测是统计和信号处理中一个经过充分研究的问题。根据您的最优性标准和有关数据的先验知识,该问题有很多变化。例如:您是否关心尽快抓住变化点?还是您关心更改的确切位置?还是您关心变化前后的确切幅度,还是只关心幅度的差异?

由于您有实时要求,我会搜索“在线贝叶斯变化点检测”,它将向您展示大量论文,以及 R 中的许多软件包可供使用。

https://www.r-bloggers.com/a-simple-intro-to-bayesian-change-point-analysis/

https://www.jstatsoft.org/v23/i03/paper

https://hips.seas.harvard.edu/files/adams-changepoint-tr-2007.pdf

突变检测:理论与应用,Basseville 和 Nikiforov

在进行平均之前,您可能还想尝试对数据应用“中值过滤器”。我不知道这在 Alul Ingle 给出的参考文献中是否已经提到过。它应该可以在不影响液滴大小的情况下提高您的平均水平。

希望这可以帮助。

赛德