2013-07-15 2 views
0

내가이 일을위한 코드를 작성 않은 : 여기 Derivative파이썬에서 목록에서 제로 크로싱을 찾는 것은

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 그래프를 첨부하여 문제를 자세히 설명하십시오.

파이썬에서이 작업을 수행하는 더 좋은 방법이 있는지 알고 싶습니다. 짧고 정확한 코드입니까?

답변

1

는 당신은 그것을 다음 하나 현재 파생 상품을 비교해야합니다. 결과적으로 Derivative [i-1]에 대한 참조를 삭제할 수 있습니다. Derivative [i]가 0보다 크고 Derivative [i + 1]이 0보다 작은 경우 반드시 Derivative [i + 1] < Derivative [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이됩니다.

+0

나는이 코드를 시험해보기 위해 네 가지 목록을 가지고있다. 그 중 두 개에서'범위를 벗어난리스트 인덱스 '오류를 얻었습니다! –

관련 문제