实时斜率和峰值检测和计算

信息处理 峰值检测
2021-12-26 16:56:15

我有一个以 500khz 采样的信号。我正在尝试检测传入数据中的上升、下降和峰值。峰值的基数可以为 250 微秒或 2.5 毫秒,幅度可以比本底噪声高 6 分贝或 15 分贝。不幸的是,我没有很好的snr。信号的直流电平不是恒定的,但比交流分量移动得慢得多。  

在决策点,我需要知道上升和下降的斜率。这是一个硬实时系统,我真的需要在下降斜率达到直流电平后在 100 微秒内做出决定。 

我正在寻找如何有效地实现一个体面的算法的建议。  

目前我做一个运行平均值(过去 25 个数据点加在一起)并尝试检测趋势。一旦我检测到上升趋势,我就会开始寻找下降趋势,一旦我这样做了,我可能会收集另外 50 个样本并开始计算。 

噪声现在很容易搞砸这个算法,因此是个问题。 

更新

为了他人的利益,我最终实施了移动平均线,然后是积分器。过去 64 个数据的移动平均值足够平滑,但在一定程度上失去了上升,整合最后 8 个值获得了上升,我只是寻找上升和下降,后来我对斜率进行了线性回归。工作正常,不是很好,但还可以。

1个回答

您应该从带限微分器开始(相当于微分器后跟低通滤波器)。微分器将消除低频趋势,并对您的峰值和斜率做出强烈反应。低通组件将去除截止频率以外的噪声。

您应该设计您的截止频率,以便您获得干净的斜率脉冲。

正斜率将随着正脉冲变慢;负斜率作为负脉冲,峰值将对应于正负之间的过零。

这种类型的滤波器通常实现为 FIR 滤波器。然后,您的滤波器的样本数量将取决于您的实时约束、截止频率的锐度以及截止频率本身。