use*_*332 4 matlab plot matrix
这是我的第一个matlab脚本,所以这个问题可能看起来基本而且非常明显,但我现在有点陷入困境.
我有两行matlab脚本:
x = linspace(0,4*pi,100);
y = exp(-x) * sin(x);
Run Code Online (Sandbox Code Playgroud)
我将关闭Mathworks上的Create 2-D Line Graph教程.我想在0到4pi的范围内绘制f(x)= e ^( - x)sin(x),但我得到一个内部矩阵维度必须在第二行上达成一致.我不确定发生了什么,因为我不认为我现在正在创建任何矩阵.任何帮助,将不胜感激!我缺少哪些语法简单的东西?谢谢!
ray*_*ica 13
这是一个非常简单的错误要解决,我承认这是大多数MATLAB程序员第一次面对MATLAB时所面临的常见错误.具体来说,当你这样做时:
y = exp(-x) * sin(x);
Run Code Online (Sandbox Code Playgroud)
此操作假设您将执行矩阵乘法.你真正想要做的是逐个元素的操作.您希望点数exp(-x)
与相应的元素相乘sin(x)
.@ellieadam提供了一些很好的链接供您查看这些操作是什么,但是如果您想进行逐元素操作,则需要在乘法运算符之前添加一个dot(.
).因此,您需要这样做:
y = exp(-x) .* sin(x); %// Note the dot!
Run Code Online (Sandbox Code Playgroud)
这条线现在应该可行了.
作为奖励,这是一个简单的例子.假设我有这两个矩阵:
A = [1 2;
3 4];
B = [4 3;
2 1];
Run Code Online (Sandbox Code Playgroud)
通过A * B
在MATLAB中完成,您将得到:
>> A * B
ans =
8 5
20 13
Run Code Online (Sandbox Code Playgroud)
请注意,这将执行矩阵乘法.通过这样做A .* B
,这是我得到的:
>> A .* B
ans =
4 6
6 4
Run Code Online (Sandbox Code Playgroud)
什么是这个说法的不同在于一个元素是A
由乘以相应的元素中B
.A
gets 的第一行和第一列乘以第一行,第一列B
和输出矩阵中的相同位置是存储此结果的位置.您可以跟随输出矩阵中的其他元素,它会给您相同的行为.还有其他逐个元素的操作,例如除法和取幂.加法和减法本质上是逐个元素的,因为在矩阵上执行这些操作是以这种方式定义的.
要添加到@ ellieadam的帖子,请查看此MathWorks文章,其中专门向您展示了矩阵和向量的各种操作,包括逐个元素的操作:
http://www.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html