Matlab到Python的转换会产生SyntaxError:“无法分配给函数调用”

问题描述 投票:0回答:1

我在Martlab中有一个使用Lanczos算法运行的程序,正在尝试将其转换为Python。我有以下问题:

在Matlab中,我有以下循环:

beta(2)=0;

for j=2:m+2

w = A*V(:,j) - beta(j)*V(:,j-1);
alpha(j) = w'*V(:,j);
w = w - alpha(j)*V(:,j);
beta(j+1) = norm(w,2);
V(:,j+1) = w/beta(j+1);
end

我已经在Python中实现了以下方式:

beta(2)=0
for j in range [2: m+2]:
    w=A*V[:,j] - beta(j)*V[:,j-1]
    alpha(j)=w.transpose()*V[:,j]
    w = w - alpha(j)*V[:,j]
    beta(j+1)=norm(w,2)
    V[:,j+1]= w/beta(j+1)

问题是我不断收到错误消息SyntaxError:“无法分配给函数调用”。我不断收到此错误消息的可能原因是什么?这不是缩进问题。

谢谢!

python matlab call lanczos
1个回答
0
投票

嗯,这不是将值分配给数组的正确方法。在Matlab / Octave中,您可以通过执行arr(2)来访问数组元素,但这在python中并不成立。在Python中,如果要访问数组arr(基于0的索引)中第二个索引的元素,则编写arr [2]。变量名后的括号表示调用或定义函数。 this(2)表示调用函数this()并传递2作为参数。我希望这能使您摆脱错误。

另外,请考虑编写一些简单的python程序,这些程序将使您对语法有所了解。

© www.soinside.com 2019 - 2024. All rights reserved.