我们正在尝试从一维数组中查找峰谷。

我们正在使用numpy.r_(),它从数组中找到每个峰和谷,但我们只希望与that肌运动的松弛点和收缩点相对应的峰和谷。

是否有任何函数会拒绝错误的最小和最大点?

请参见下面的错误示例:

python - 如何从一维阵列获得正确的峰谷-LMLPHP

最佳答案

您会遇到高频,小振幅的振荡,这对于寻找峰值来说是不希望的。在搜索峰之前将其过滤掉。一个简单的过滤器是scipy.ndimage中的1-dimensional Gaussian。在您图表的比例上,似乎

smooth_signal = ndimage.gaussian_filter1d(signal, 5)


应该大约正确(窗口大小应足够大以抑制不希望的振荡,但又要足够小以不使实际峰值失真)。然后将您的峰发现算法应用于smooth_signal

signal processing module具有更复杂的过滤器,但是这些过滤器需要花费一些时间来学习使用。

10-08 07:04