具有多个最小值的两列数据

时间:2015-11-29 01:52:28

标签: python

我正在尝试读取两个列数据并找到它具有的所有最小值。图表看起来像this

x轴是时间,y轴是磁通。通过此链接可以看到数据 https://onedrive.live.com/redir?resid=1E870F010DBA8407!298&authkey=!ABdG6FJ_i3d9oWI&ithint=file%2ctxt 我找不到很酷的算法。我还尝试拟合曲线来轻松定义最小值,但结果不正确。哪种静态方法适合这项工作。我用python和C. 如果你分享你的想法,我会很高兴。

1 个答案:

答案 0 :(得分:0)

要做的第一件事就是沿着x轴对点列表进行排序,否则这将是一个绝对的痛苦。然后你可以使用:

minima_indices=[i+1 for i,y in enumerate(y_list[1:-1]) if y_list[i-1]>=y<=y_list[i+1]]

这应该为您提供排序列表中最小值的索引。请注意,它省略了第一点和最后一点,如果您希望将它们包含在内,可以轻松完成。

如果您只需要图表中的深度最小值,那么您可以在结尾处(或在原始列表理解期间通过添加条件)过滤掉所有小的最小值:

def approx(a,b,tol):
    if abs(a-b)<tol: return True
    return False

minima_indices_filtered=[i for i in minima_indices if not approx(y_list[i],y_0,tol)]

y_0是图片顶部的平行线的值,tol是最小值在注册为最小值之前的深度。