2014-01-20 104 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