您应该将宽度指定为峰的预期宽度。从Scipy 文档:
用于计算 CWT 矩阵的一维宽度数组。一般来说,这个范围应该涵盖预期的感兴趣峰的宽度。
下面是一个例子来说明宽度的影响。
from scipy import signal
xs = np.arange(0, 20*np.pi, 0.05)
xs2 = np.arange(0, 20*np.pi, 0.025)
data = np.sin(xs)
data2 = np.sin(xs2)
data= data + data2[:1257]
peakind = signal.find_peaks_cwt(data, np.arange(1,200))
peakind, xs[peakind], data[peakind]
fig, ax = plt.subplots()
ax.set_title('Detect R peak')
ax.plot(data)
for peak in peakind:
ax.axvline(x=peak, color='r')
这仅导致全局峰值。

但如果将宽度更改为 np.arange(1,100),您还将看到另一个局部峰值。
peakind = signal.find_peaks_cwt(data, np.arange(1,100))
在这里,由于宽度的差异,这些方法检测到更多的峰。
