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) 

这给了我“无效的语法”。

我需要解决哪些问题才能解决此错误?

+1

功率是在Python''**。 '^'是xor。 –

+1

你有不匹配的括号。数它们:一个开放的'('和两个闭合的''''')。 –

+0

不是你的问题,买这个循环可以矢量化,如果你使用numpy:'Acceleration_RMT5x = RMT5x [2:] -2 * RMT5x [1:-1] + RMT5x [: - 2] /(1/250)** 2 '。不需要循环。 – TheBlackCat

要提高的东西在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) 
+0

您仍然有OP的括号错误,并且您的循环将失败,因为i + 1将尝试读取不存在的索引。 (我也不相信OP不想修改现有的ndarray,但这很难确定。) – DSM

+0

在这种情况下最好使用'enumerate(RMT5x)'。 – TheBlackCat

+0

@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)]