我已经查看了
scipy.signal
文档以了解find_peaks()
中使用的峰值查找方法的解释并且无法找到类似于给出的优秀解释但cwt峰值查找方法的解释。
这里有人能解释
find_peaks()
函数使用的寻峰方法吗
我正在寻找一个专门针对该函数的算法实现的解释,而不是对其用法的解释
文档 有一个 Show Source 链接显示:
https://github.com/scipy/scipy/blob/v1.10.1/scipy/signal/_peak_finding.py#L835
峰值或局部最大值定义为任何样本,其两个直接邻居具有较小的振幅。
它继续从这个例程中收集原始特征:
https://github.com/scipy/scipy/blob/v1.10.1/scipy/signal/_peak_finding_utils.pyx#L64
您可能想要运行高斯模糊 在你的嘈杂数据,或窗口中位数或其他一些 在要求峰值之前的技术。 或者按照他们的建议来选择
find_peaks_cwt
.
文档包含一些漂亮的插图 不同的参数设置将如何改变 根据虚假检测峰的数量 到您的数据模式。大多数情况下我们放一个简单的盒子 围绕每个候选峰看是否应该 在过滤步骤中存活下来。 阅读(简短!)相应的
if
条款
对于每个不是很清楚的图表。
考虑将 np.random.uniform(high=a) 添加到 b * sine_wave。 根据
a
和 b
的大小,您可能会发现
几乎每 2π 间隔出现一次峰值。或者你可能会找到一个
单个半波内的多个局部最大值。
所以平滑会强烈影响峰值检测性能。
考虑使用这种方法: