我在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个)"
任何帮助?
答案 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
的值不会占用太多答案。