【发布时间】:2019-07-12 03:27:50
【问题描述】:
我正在处理信号数据,并试图在峰值开始形成之前找到实例(或接近它)。例如:
目前使用 scipy.signal.find_peaks 计算红色星形和橙色 x,以找到连续两个大于 50 的峰值之前的第一个最小峰值。我想要的理想位置是带有红色星星和第二个和第三个橙色 x 的区域。
我的问题是,有时在第一个驼峰形成之前没有最小值,这会导致左侧第一个橙色 x 出现问题。
什么是更好的方法或改进我当前的方法以在驼峰形式之前获得那个位置的方法(粗略的箭头位置):
我当前的代码看起来像这样,它分别为蓝色和绿色线运行:
step_peak, _ = find_peaks(z, height=60, distance=40)
step_min, _ = find_peaks(-1*z, height=-60)
contact = []
for i in range(len(step_peak)-1):
if step_peak[i+1] - step_peak[i] < 100:
for min in reversed(step_min):
if min < step_peak[i]:
contact.append(min)
break
这种方法适用于整个数据集的大约 90%,只有少数最终会像我需要考虑的第一个橙色 x。
任何帮助将不胜感激。
【问题讨论】:
-
也许你要找的点是二阶导数最大的地方?
标签: python matplotlib scipy