Python检测替代峰

标签 python signal-processing

我有以下信号数据:

schema

信号为红色,滚动平均值为灰色

我想找到一种方法来识别在阈值范围内围绕均值连续出现正负峰值的指标。

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

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

最佳答案

假设您有两个值列表,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]

关于Python检测替代峰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41241809/

相关文章:

python - AWS boto 和 boto3 有什么区别

python - 如何在循环中每 x 个步骤创建一个新列表?

python - 解释这个 lambda

python - 振动数据集子集的快速傅立叶变换

matlab - 扩展卡尔曼滤波器收敛到不正确的值,这只是野兽的本性吗? (图片)

python - 滤波器设计以寻找特定音频频率的能量

python - linux python numpy脚本在shell中运行但不在终端中运行

python - 如何在Tensorflow中将多维张量的一维相乘?

matlab - Matlabs停止执行Audiorecorder

matlab - 是否可以使用 DSP System Toolbox(MATLAB) 实时处理两个麦克风输入?