Python检测替代峰值

时间:2016-12-20 11:56:45

标签: python signal-processing

我有以下信号数据:

schema

信号为 RED ,滚动均值为灰色

我想找到一种方法来识别指数,其中在thresold值内的均值周围有连续的正负峰值。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

enter image description here

然后你感兴趣的峰值的值大于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]