For循环错误?
我是新来的Python,但我试图学习。我正在尝试在Python中重新创建一个Matlab for
循环。 Matlab的for
循环如下所示:For循环错误?
for i = 2:(L-1)
Acceleration_RMT5_x(i-1) = (RMT5(i+1,1)-2*RMT5(i,1)+RMT5(i
1,1))/(1/FrameRate)^2;
end
的数据类型是float64,并且是288x1载体。我的Python到目前为:
for i in RMT5x:
Acceleration_RMT5x = RMT5x[i+1] -2*RMT5x[i] +RMT5x[i-1]/(1/250)^2)
这给了我“无效的语法”。
我需要解决哪些问题才能解决此错误?
要提高的东西在Python的功率需要**
不^
而且你通过值RMT5x
循环,但您要使用的值(i
)为指标。相反,你想循环索引。
Acceleration_RMT5x = list()
for i in range(1, len(RMT5x)-1):
Acceleration_RMT5x.append(RMT5x[i+1] -2*RMT5x[i] +RMT5x[i-1]/(1./250)**2)
您仍然有OP的括号错误,并且您的循环将失败,因为i + 1将尝试读取不存在的索引。 (我也不相信OP不想修改现有的ndarray,但这很难确定。) – DSM
在这种情况下最好使用'enumerate(RMT5x)'。 – TheBlackCat
@TheBlackCat除了这不是因为用户需要访问RMT5x的前一个和下一个条目。使用'枚举'不会允许这样做。 – Suever
我会用一个列表理解:
import numpy as np
Acceleration_RMT5x = [np.power((RMT5(i+1,1)-2*RMT5(i,1)+RMT5(i-1,1))/(1/FrameRate), 2)]
功率是在Python''**。 '^'是xor。 –
你有不匹配的括号。数它们:一个开放的'('和两个闭合的''''')。 –
不是你的问题,买这个循环可以矢量化,如果你使用numpy:'Acceleration_RMT5x = RMT5x [2:] -2 * RMT5x [1:-1] + RMT5x [: - 2] /(1/250)** 2 '。不需要循环。 – TheBlackCat