我需要绘制的函数是y = exp(-0.3 * t)*(2 * cos(2 * t)+ 4 * sin(2 * t)),t值介于0和2之间* PI。
我在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.
我不知道为什么。有人可以指出原因并建议正确的命令行参数吗?
谢谢!
答案 0 :(得分:1)
您的问题出在这个术语中:
exp(-0.3*t) * (2*cos(2*t) + 4*sin(2*t));
你正在乘以2个向量。您希望进行逐元素操作,即{em>每个元素 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));
,就像这样
protected void SendEmail(object sender, EventArgs e)
{
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
gv_TotalAllReg.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
MailMessage mm = new MailMessage("techhelp@xyz.com", "xyz@xyz.com,xyz1@xyz.com");
mm.Subject = "Daily Report";
mm.Body = "Dear Customer, <br><br>Applications received as on: " + ViewState["date"] + ".<hr />" + sw.ToString() + "<br/>Thanks,<br>Support Team.";
mm.IsBodyHtml = true;
mm.CC.Add("my@no.com");
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = "no@gmail.com";
NetworkCred.Password = "n0";
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
lbl_msg.Visible = true;
}
}
}
有关数组与元素操作的信息,请参阅此文档:http://uk.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html
答案 1 :(得分:1)
“*”运算符是矩阵乘法运算符,如https://en.wikipedia.org/wiki/Matrix_multiplication
您需要使用“。*”运算符,它是每个元素的运算符。您必须使用它将一个矢量或矩阵中的元素与另一个矢量或矩阵中的元素一对一地匹配。
所以你必须这样做
y=exp(-0.3*t).*(2*cos(2*t) + 4*sin(2*t));
请注意,乘以常数时不需要“。*”,因为矩阵和每个元素的操作效果相同