我有一个一维信号,我试图在其中找到峰值。我希望能完美地找到它们。
我目前正在做:
import scipy.signal as signal
peaks = signal.find_peaks_cwt(data, np.arange(100,200))
下面是带有红色点的图表,显示了 find_peaks_cwt()
找到的峰的位置。
如您所见,计算的峰值不够准确。真正重要的是右边的三个。
我的问题:如何使这个更准确?
更新:数据在这里:http://pastebin.com/KSBTRUmW
对于某些背景,我想做的是在图像中找到手指之间的空间。绘制的是手周围轮廓的 x 坐标。青色 Blob = 峰。如果有更可靠/更强大的方法,请发表评论。
最佳答案
已解决,解决方案:
先过滤数据:
window = signal.general_gaussian(51, p=0.5, sig=20)
filtered = signal.fftconvolve(window, data)
filtered = (np.average(data) / np.average(filtered)) * filtered
filtered = np.roll(filtered, -25)
然后按照rapelpy的回答使用angrelextrema。
结果:
关于python - scipy 信号 find_peaks_cwt 没有准确找到峰值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571260/