2014-01-20 133 views
0

我試圖繪製下列的函數:MATLAB繪圖錯誤

enter image description here

的時間間隔是要使用的0.002的步長0到5秒。 這是我迄今爲止...

t = 0:0.002:5; 
k = [2; 4; 6; 8]; 
i = (1/pi) + 0.5*sin(4*t) - (2/pi)*sum((cos(4*k*t))/(k*k-1)); 
plot(t,i) 

它給我的錯誤:「*」

Error using * 
Inner matrix dimensions must agree. 

Error in lab1_5 (line 4) 
i = (1/pi) + 0.5*sin(4*t) - 
(2/pi)*sum((cos(4*k*t))/(k*k-1)); 

然後我想盡使用「./」和,但它仍然給我同樣的錯誤。我究竟做錯了什麼?

回答

1

你的代碼更改爲:

t = 0:0.002:5; 
k = [2; 4; 6; 8]; 

i = (1/pi) + 0.5*sin(4*t) 
for j=1:4 
    i = i-(2/pi)*((cos(4*k(j)*t))/(k(j)*k(j)-1)); 
end 
plot(t,i) 

的原因是k是一個山坳矢量(或4X1矩陣),所以你不能簡單地通過k*k相乘。對於矩陣乘法,左右尺寸必須遵循n × mm × p。在這種情況下,您需要循環乘以k的每個元素。

+0

您在回答中根本沒有處理多重索引。 k'* k是一個常量!這個數字是無用的。 – John

+0

啊,就是這樣,謝謝。只是想知道,如果k是一個行向量,那麼我該怎麼做? – user3216081

+0

@John固定。感謝您指出。 – herohuyongtao