【问题标题】:Python detect alternative peaksPython检测替代峰
【发布时间】:2017-05-05 15:20:34
【问题描述】:

我有以下信号数据:

信号为RED,滚动平均值为GREY

我想找到一种方法来识别在阈值内的平均值周围存在连续正负峰值的索引。

例如,对于 0,08 的阈值,它将检测 22、35、36、第二个标记...

我不知道如何检测这些峰值。有人已经有这个用例了吗?

【问题讨论】:

  • 目前还不清楚您要检测哪些峰。阈值 0.08 在您的图表上甚至不可见。您能否详细说明一下,甚至对图表进行注释?
  • 同意家长的意见,您能否提供一个示例说明您期望的输出是什么?另外,如果可能的话,滚动平均值的窗口大小?
  • 我相信我可以为您做到这一点。您能否将数据或链接发布为 ascii 文件?

标签: python signal-processing


【解决方案1】:

假设您有两个值列表,xy。而且您还有滚动平均值的值列表,但也许这不是必需的。如果要识别尖峰,可以减去y系列的前一个值,得到相邻值之差的大小:

spikes = [0.0] + [abs(y[i]-y[i-1]) for i in range(1, len(y))]

那么您感兴趣的峰值的值大于 0.16(高于平均值 0.08,低于平均值 0.08)。你可以像这样找到这些:

threshold = 0.08
spike_locations = [x[i] for i in range(len(spikes)) if spikes[i] > 2 * threshold]

[22.0, 35.0, 36.0]

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多