我写了一个代码来执行此操作:
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中是否有更好的方法,我的意思是更短更精确的代码?
答案 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
。