我有以下信号数据:
信号为红色,滚动平均值为灰色。
我想找到一种方法来识别在阈值范围内围绕均值连续出现正负峰值的指标。
例如,对于 0.08 的阈值,它将检测 22、35、36、第二个标记...
我不知道如何检测这些峰值。有人已经有这个用例了吗?
最佳答案
假设您有两个值列表,x
和 y
。您还有一个滚动平均值的值列表,但也许这不是必需的。如果要识别尖峰,可以减去 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]
关于Python检测替代峰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41241809/