-1

我在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 个)”

有什么帮助吗?

4

1 回答 1

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不会占用太多的答案行。

于 2013-05-06T22:12:24.717 回答