[英]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.