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

9
我希望能够通过scipy.signal.find_peaks_cwt()函数识别出光谱图数据中的一些峰值。但是我找到的官方文档描述不太清楚,有时会在噪声中误识别成假峰,而有时又不能识别出实际的峰值。
请问是否有更好的解释该函数参数的方法,包括“widths”,或者是否可以向我展示其他选择?

你尝试查看该函数的源代码了吗? - wwii
1
甚至可以在您链接的描述底部的注释中吗? - jojek
1
可能是 https://dev59.com/Rojca4cB1Zd3GeqPv18M 的重复问题。 - Curt F.
我已经阅读了这些笔记,那篇文章在理解widths参数方面非常有帮助,谢谢你的发布。但是,其他可选参数我仍然不太清楚,你有什么想法吗?我查看了源代码,但由于我对Python还比较陌生,很难从中获得真正的收获...不过我会继续研究的。 - NGXII
1个回答

6
如果你的信号比较干净,我建议首先使用更简单的替代方案,例如PeakUtils indexes函数。该代码比使用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))

enter image description here

Scipy中的find_peaks_cwt函数在处理噪声数据时非常有用,因为它使用了连续小波变换


链接已失效 :(((( - jtlz2
1
@jtlz2,链接已修复,感谢您的报告。 - Yoan Tournade
多年之后,感谢您的修复! - jtlz2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接