从python中的列表中查找过零点

时间:2013-07-15 18:31:45

标签: python-2.7 signal-processing

我写了一个代码来执行此操作:

for i in xrange(len(Derivative)):
    if ((Derivative[i-1] > Derivative[i]) and (Derivative[i+1] < Derivative[i]) and (Derivative[i-1] > 0.0) and (Derivative[i+1] < 0.0) and (Derivative[i] > 0.0)):
        print str(i+1)

这里Derivative是我必须检测零交叉的列表,主要是零交叉前的值为正且零交叉后的值为负的。

我已附上Derivative的图表以进一步阐明问题!

我想知道在Python中是否有更好的方法,我的意思是更短更精确的代码?

1 个答案:

答案 0 :(得分:1)

您只需将当前导数与其后的导数进行比较。因此,您可以删除对Derivative [i-1]的任何引用。如果微分[i]大于零,并且微分[i + 1]小于零,则必然导数[i + 1] <衍生物[I]。所以你也可以删除那个条件。这留下了:

for i in xrange(len(Derivative)-1):
    if Derivative[i] > 0 and Derivative[i+1] < 0:
        print "crossing between indexes {} and {}".format(i, i+1)

另外,我将xrange的参数缩短了一个。否则,你会得到list index out of range