Python中的峰值检测:scipy.signal.find_peaks_cwt函数如何工作?

NGX*_*XII 6 python signal-processing numpy scipy feature-detection

我正在寻找某些光谱仪数据中的一些峰值,并试图使用该scipy.signal.find_peaks_cwt()功能来完成它.

但是,我发现的官方文档不太具有描述性,并且往往会在噪声中拾取错误的峰值,而有时不会在数据中拾取实际的峰值.

任何人都可以给我一个更好的解释这个函数中我可以使用的参数,包括"宽度",或者你能告诉我一些替代方案吗?

Yoa*_*ade 5

如果您的信号相对干净,我建议首先使用更简单的替代方案,例如PeakUtils索引功能.代码比以下方式更直接scipy.signal.find_peaks_cwt:

import numpy as np
from peakutils.peak import indexes
vector = [ 0, 6, 25, 20, 15, 8, 15, 6, 0, 6, 0, -5, -15, -3, 4, 10, 8, 13, 8, 10, 3, 1, 20, 7, 3, 0 ]
print('Detect peaks with minimum height and distance filters.')
indexes = indexes(np.array(vector), thres=7.0/max(vector), min_dist=2)
print('Peaks are: %s' % (indexes))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Scipy find_peaks_cwt在存在噪声数据的情况下确实很有用,因为它使用连续小波变换.