Matlab到Python代码

时间:2013-05-03 12:41:47

标签: python matlab numpy

我在matlab中有一段代码:

Tf=eye(2);
Tb=eye(2);
Tt=eye(2);

n=250;

f=zeros(2,n);


for i=1:n
    f(:,i)=Tf*f(:,i-1);
end

我尝试将其更改为Python代码:

Tf=eye(2)

n=250

f=numpy.zeros((2,n))

for i in range (n)

    f[:,i]=numpy.dot(Tf, f[:,i-1])

这给出了" TypeError:数组()只取1个参数(给定2个)"

任何帮助?

1 个答案:

答案 0 :(得分:0)

正如@CharlesBrunet所说,python实现存在一些问题,应该是:

import numpy

Tf=numpy.eye(2)

n=5

f=numpy.zeros((2,n))

for i in range(n):
    f[:,i]=numpy.dot(Tf, f[:,i-1])

结果f是:

[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]

您的matlab实现中也存在问题,因为您试图在f(:,0)循环的第一次迭代中对for进行索引,这将导致错误:Attempted to access f(:,0); index must be a positive integer or logical 。这是固定版本:

Tf=eye(2);

n=5;

f=zeros(2,n);

for i=2:n
    f(:,i)=Tf*f(:,i-1);
end

结果f是:

f =

     0     0     0     0     0
     0     0     0     0     0

换句话说,除了那些少数拼写错误之外,每个实现似乎都没有任何问题。在制作这些示例时,您必须更加小心,特别是在考虑发布有关它们的问题时。

请注意,我已重新定义n=5,因此f的值不会占用太多答案。