如何检测信号处理中的“快速”变化

信息处理 过滤器 离散信号 即时的 测量
2022-01-14 07:43:04

我正在做一个项目,我们测量组件的可焊性。测量的信号有噪声。我们需要实时处理信号,以便我们能够识别从 5000 毫秒开始的变化。

我的系统每 10 毫秒采样一次实际值 - 但它可以调整为较慢的采样。

  1. 如何在 5000 毫秒时检测到这种下降?
  2. 您如何看待信噪比?我们是否应该专注并尝试获得更好的信号?
  3. 存在一个问题,即每个度量都有不同的结果,有时下降比这个例子还要小。

样本信号 采样信号 2 采样信号 3

链接到数据文件(它们与用于绘图的文件不同,但它们显示最新的系统状态)

  1. https://docs.google.com/open?id=0B3wRYK5WB4afV0NEMlZNRHJzVkk
  2. https://docs.google.com/open?id=0B3wRYK5WB4afZ3lIVzhubl9iV0E
  3. https://docs.google.com/open?id=0B3wRYK5WB4afUktnMmxfNHJsQmc
  4. https://docs.google.com/open?id=0B3wRYK5WB4afRmxVYjItQ09PbE0
  5. https://docs.google.com/open?id=0B3wRYK5WB4afU3RhYUxBQzNzVDQ
3个回答

这个问题的经典参考是检测突然变化 - Basseville 和 Nikiforov 的理论和应用。 整本书可作为PDF 下载

我的建议是您阅读第 2.2 章关于CUSUM(累积和)算法的内容。

我通常将此问题视为斜率检测之一。如果您在移动窗口上计算线性回归,则图示的下降将显示为斜率符号和/或幅度的显着变化。这种方法提供了许多需要“调整”的因素:例如,采样频率、窗口大小等将影响斜率符号检测器的鲁棒性(抗噪性)。这是可以应用上述一些评论的地方。可以在线路拟合之前应用的任何过滤或噪声抑制都将改善您的结果。

我通过计算数据左侧部分与数据右侧部分的平均值的 T 统计量来完成这类事情。这假设您知道转换点在哪里,当然您不知道。

所以,你要做的是沿着时间轴尝试数百个分区点,并找到具有最显着 T 统计量的那个。

u_left, u_right : mean of left and right portion
s_left, s_right : SD of left and right portion
n_left, n_right : number of samples on left and right (subtract one from each for the one degree of freedom)

se = sqrt(s_left^2 / n_left^2 + s_right^2 / n_right^2)
T = (u_left - u_right) / se

您可以像二进制搜索一样执行此操作。尝试 10 个数据点,找到最大的两个,然后在它们之间尝试 10 个点,等等。这样你可以获得一个非常精确的转换点。我不要求准确性。:-)

让我们知道怎么回事!

PS 您可以将均值和 sd 计算为运行总和,这降低了从 N^2 到 N 的每种可能性计算此分区函数的复杂性。这样做您可能只需要在每个可能的分区点计算 T 统计量。