2013-05-03 84 views
-1

我有一段代码在MATLAB:Matlab来Python代码

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

这给出“类型错误:阵列()恰恰1参数(2给出)“

任何帮助吗?

+4

发布您的python尝试以及 – Dan 2013-05-03 12:46:35

+3

因为您选择隐藏Python代码,所以很难提供帮助。试图猜测你写的内容真的很没趣。 – 2013-05-03 12:46:36

+2

此外,“只是不行”很模糊。什么对它不起作用?你提供的细节越多越好。例如你期望得到什么,你实际得到了什么,它引发的任何例外的完整追溯等。 – mgilson 2013-05-03 12:46:53

回答

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实现,因为您试图在for循环的第一次迭代中索引f(:,0),这将导致错误: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的值不需要太多的答案。