基本矩阵运算 -凯发k8网页登录
以下示例演示了以 matlab® 语言处理矩阵的基本方法和函数。
首先,创建一个名为 a
且包含 9 个元素的简单向量。
a = [1 2 3 4 6 4 3 4 5]
a = 1×9
1 2 3 4 6 4 3 4 5
现在,对向量 a
中的每个元素加 2,并将结果存储在一个新向量中。
请注意 matlab 不需要对向量或矩阵运算进行特殊的处理。
b = a 2
b = 1×9
3 4 5 6 8 6 5 6 7
在 matlab 中创建图形就像执行一条命令一样简单。接下来用网格线来绘制向量和结果。
plot(b)
grid on
matlab 也可以创建包含轴标签的其他图表类型。
bar(b) xlabel('sample #') ylabel('pounds')
matlab 也可以在绘图中使用符号。下面是用星号来标记各个点的一个示例。matlab 提供了多种符号和线型。
plot(b,'*')
axis([0 10 0 10])
matlab 擅长的一个方面是矩阵计算。
创建矩阵就像创建向量一样简单,可使用分号 (;) 分隔矩阵的各行。
a = [1 2 0; 2 5 -1; 4 10 -1]
a = 3×3
1 2 0
2 5 -1
4 10 -1
可以很容易地计算矩阵 a
的转置。
b = a'
b = 3×3
1 2 4
2 5 10
0 -1 -1
接下来,将这两个矩阵相乘。
同样请注意,matlab 不要求像处理数据集合一样处理矩阵。matlab 知道您正在处理矩阵并相应调整您的计算。
c = a * b
c = 3×3
5 12 24
12 30 59
24 59 117
无需执行矩阵相乘,使用 .* 运算符即可将两个矩阵或向量的对应元素相乘。
c = a .* b
c = 3×3
1 4 0
4 25 -10
0 -10 1
使用矩阵 a 对方程 a*x = b 求解,方法是使用 \(反斜杠)运算符。
b = [1;3;5]
b = 3×1
1
3
5
x = a\b
x = 3×1
1
0
-1
现在可以显示 a*x 等于 b。
r = a*x - b
r = 3×1
0
0
0
matlab 拥有几乎所有用于常见矩阵计算的函数。
有用于获取特征值的函数...
eig(a)
ans = 3×1
3.7321
0.2679
1.0000
...以及用于获取奇异值的函数。
svd(a)
ans = 3×1
12.3171
0.5149
0.1577
“poly”函数生成特征多项式系数的向量。
矩阵 a
的特征多项式为
p = round(poly(a))
p = 1×4
1 -5 5 -1
使用 roots
函数很容易确定多项式的根。
这些值实际上是原始矩阵的特征值。
roots(p)
ans = 3×1
3.7321
1.0000
0.2679
除了矩阵计算之外,matlab 还有许多其他应用。
求两个向量的卷积...
q = conv(p,p)
q = 1×7
1 -10 35 -52 35 -10 1
...或再次求卷积并绘制结果图。
r = conv(p,q)
r = 1×10
1 -15 90 -278 480 -480 278 -90 15 -1
plot(r);
使用 who
或 whos
命令可随时获取内存中存储的变量列表。
whos
name size bytes class attributes a 3x3 72 double b 3x3 72 double c 3x3 72 double a 1x9 72 double ans 3x1 24 double b 3x1 24 double p 1x4 32 double q 1x7 56 double r 1x10 80 double x 3x1 24 double
可以通过键入特定变量的名称来获取该变量的值。
a
a = 3×3
1 2 0
2 5 -1
4 10 -1
每行可以有一条以上的语句,使用逗号或分号分隔各个语句。
如果未指定变量来存储操作的结果,则结果将存储在名为 ans
的临时变量中。
sqrt(-1)
ans = 0.0000 1.0000i
正如所见,matlab 在计算中很容易处理复数。