[英]Plotting equally spaced points for a graph on MATLAB
对于0到2 * pi之间的t值范围,我需要绘制的函数是y = exp(-0.3 * t)*(2 * cos(2 * t)+ 4 * sin(2 * t))。
我在MATLAB上输入了以下命令:
>> t=linspace(0,2*pi,101);
>> y=exp(-0.3*t)*(2*cos(2*t) + 4*sin(2*t));
我想出了以下错误:
Error using *
Inner matrix dimensions must agree.
我不知道为什么 有人可以指出原因并提出正确的命令行参数吗?
谢谢!
您的问题是这个术语:
exp(-0.3*t) * (2*cos(2*t) + 4*sin(2*t));
您正在将2个向量相乘。 您想要做逐元素的操作,即, 每个元件 exp(-0.3*t)
时间的每一个对应元件 (2*cos(2*t) + 4*sin(2*t))
,而不是所述载体两者的乘积。
要实现您想要的,只需添加一个点.
在乘法*
之前,像这样
y = exp(-0.3*t) .* (2*cos(2*t) + 4*sin(2*t));
请参阅此文档以了解数组与元素方式的操作: http : //uk.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html
“ *”运算符是矩阵乘法运算符,例如https://en.wikipedia.org/wiki/Matrix_multiplication
您需要使用“。*”运算符,它是每个元素的运算符。 您必须使用它来一对一地匹配一个向量或矩阵中的元素与另一向量或矩阵中的元素。
所以你要做
y=exp(-0.3*t).*(2*cos(2*t) + 4*sin(2*t));
请注意,乘以常数时不需要“。*”,因为对于矩阵运算和每个元素运算,其效果相同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.