找到信号中的峰值

时间:2017-02-03 21:42:35

标签: algorithm plot signal-processing

我想知道是否有任何算法可以在Java(Android)中找到信号中的峰值。我正在研究ECG的信号,我正在使用实时算法来绘制信号,因此我收到的每个点我都是直接绘制的,所以我没有下一个点的数据。

信号就像这样

Ecg signal

1 个答案:

答案 0 :(得分:0)

从过去的经验来看,我可以提出以下简单的想法。我假设你正在寻找大穗,对吧?如果没有,我认为以下过程将起作用。您只需要更改阈值即可。请记住,下面的想法来自经验,但未经过测试

  1. 通过移动平均滤波器运行信号以使其平滑。 (临界!)
  2. 找到此滤波信号的离散差分。
  3. 通过另一个移动平均滤波器运行离散差分。 (也很关键!)
  4. 在平滑差分信号的每个过零点处,将点 n (过零的左或右样本)与原始滤波信号上的等效值进行比较(在第2步)。如果此点大于某个预定阈值, n 就是你的大穗。
  5. 我希望这会有所帮助。如果您有任何疑问,请随时询问。我在C ++中实现了一个类似的算法,可能有助于查看:https://github.com/sawbg/avda/blob/master/src/process.hpp