2013-05-03 97 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的值不需要太多的答案。