我们试图从1d阵列中找到峰值和谷值。
我们正在使用numpy.r_()
,它从阵列中找到每个峰和谷但我们只想要对应于膈肌运动的松弛和收缩点的峰和谷。
是否有任何函数拒绝错误的最小和最大点?
看到下面的一个坏例子:
您有高频,小振幅振荡,这对于峰值发现而言是不可取的。在搜索峰值之前将其过滤掉。一个简单的过滤器是来自scipy.ndimage的1-dimensional Gaussian。在你的图表的规模,似乎
smooth_signal = ndimage.gaussian_filter1d(signal, 5)
应该是正确的(窗口尺寸应足够大,以抑制不必要的振荡,但小到足以不扭曲实际的峰值)。然后将您的峰值发现算法应用于smooth_signal
。
signal processing module有更复杂的过滤器,但这些需要一些时间来学习使用。