我是一個Python初學者,我確實明白在這種情況下有什麼不對,SetVel[i+4]
超出了範圍。但我無法糾正它。任何幫助將是驚人的。這裏是我的代碼:如何刪除for循環的'索引超出範圍'錯誤?
OutSmooth = []
IndexOut = []
IndSmooth = []
length = len(SetVel)
for i in range(2, length-3):
diffnext = (SetVel[i+4])- (SetVel[i+3])
diffprev = (SetVel[i+1])-(SetVel[i])
diff1 = SetVel[i+2]-SetVel[i+1]
diff2 = SetVel[i+3]-SetVel[i+2]
if diff1 < 1.5*diffprev or diff2 < 1.5*diffnext:
IndSmooth.append(SetVel.index(SetVel[i+2]))
else:
OutSmooth.append(SetVel[i+2])
PS:對於那些問這是什麼居然是:這是我的非衍生曲線平滑的嘗試。在我的主程序中,我確實有一個基於NumPy的衍生曲線平滑機制,但是我已經完成了這個工作,這是爲了我的理解和備份。由於
編輯:
break
後病情一道努力消除錯誤,但代碼只有一次運行該塊。只有一個指數附加
您的range()轉到了'length-3',所以'i + 4'會超出'SetVel'的長度。 – AChampion
是的,我明白錯誤的原因,所以解決方案將它限制爲[i]而不是集合中增加的元素? –
現在的問題是,它只打印一個元素作爲答案,因爲休息,這絕對不是真的 –