回答问题

我有一个一维信号,我试图在其中找到峰值。我正在寻找完美的找到它们。

我目前正在做:

import scipy.signal as signal
peaks = signal.find_peaks_cwt(data, np.arange(100,200))

下面是带有红点的图表,显示了find_peaks_cwt()发现的峰的位置。

信号 + 峰值

如您所见,计算的峰值不够准确。真正重要的是右手边的三个。

我的问题:如何使这个更准确?

更新:数据在这里:http://pastebin.com/KSBTRUmW

对于某些背景,我想做的是在图像中找到手指之间的空间。绘制的是手周围轮廓的 x 坐标。青色斑点 u003d 峰。如果有更可靠/更强大的方法,请发表评论。

在此处输入图像描述

Answers

解决了,解决方法:

先过滤数据:

  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。

结果:

在此处输入图像描述

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐