我们正在尝试从一维数组中查找峰谷。
我们正在使用numpy.r_()
,它从数组中找到每个峰和谷,但我们只希望与that肌运动的松弛点和收缩点相对应的峰和谷。
是否有任何函数会拒绝错误的最小和最大点?
请参见下面的错误示例:
最佳答案
您会遇到高频,小振幅的振荡,这对于寻找峰值来说是不希望的。在搜索峰之前将其过滤掉。一个简单的过滤器是scipy.ndimage中的1-dimensional Gaussian。在您图表的比例上,似乎
smooth_signal = ndimage.gaussian_filter1d(signal, 5)
应该大约正确(窗口大小应足够大以抑制不希望的振荡,但又要足够小以不使实际峰值失真)。然后将您的峰发现算法应用于
smooth_signal
。signal processing module具有更复杂的过滤器,但是这些过滤器需要花费一些时间来学习使用。