MATLAB绘图误差

MATLAB绘图误差,matlab,matrix,plot,Matlab,Matrix,Plot,我试图绘制以下函数: 时间间隔为0至5秒,步长为0.002。 这就是我目前所拥有的 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秒,步长为0.002。 这就是我目前所拥有的

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));
然后我尝试了“/”和“*”的所有用法,但它仍然会给我相同的错误。我做错了什么?

将代码更改为:

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×m
m×p
。在这种情况下,您需要循环乘以
k

的每个元素,因为您根本没有处理答案中的多重索引。k'*k是一个常数!那太糟糕了。啊,就是这样,谢谢。我只是想知道,如果k是一个行向量,那么我该怎么办?你越来越近了。你的总和是1,1,而不是12501,这是你对待它的方式。你不需要“求和”这个词,那会影响你的结果(仍然)@John是的,对我来说太粗心了。已修复,谢谢。:)