目录
简介
MATLAB® 具有两种不同类型的算术运算:数组运算和矩阵运算。可以使用这些算术运算来执行数值计算,例如两数相加、计算数组元素的给定次幂或两个矩阵相乘。
矩阵运算遵循线性代数的法则。与之不同,数组运算则是执行逐元素运算并支持多维数组。句点字符 (.
) 将数组运算与矩阵运算区别开来。但是,由于矩阵运算和数组运算在加法和减法的运算上相同,因此没有必要使用字符组合 .+
和 .-
。
数组运算
数组运算可针对向量、矩阵和多维数组的对应元素执行逐元素运算。如果操作数的大小相同,则第一个操作数中的每个元素都会与第二个操作数中同一位置的元素匹配。如果操作数的大小兼容,则每个输入都会根据需要进行隐式扩展以匹配另一个输入的大小。
举一个简单的示例,可以添加两个大小相同的向量。
A = [1 1 1]
A =
1 1 1
B = [1 2 3]
B =
1 2 3
A+B
ans =
2 3 4
如果一个操作数是标量,而另一个操作数不是标量,则 MATLAB 会将该标量隐式扩展为与另一个操作数具有相同的大小。例如,可以计算一个标量和一个矩阵的按元素乘积。
A = [1 2 3; 1 2 3]
A =
1 2 3
1 2 3
3.*A
ans =
3 6 9
3 6 9
如果从一个 3×3 矩阵中减去一个 1×3 向量,隐式扩展仍然会起作用,因为它们的大小是兼容的。当您执行减法运算时,该向量将隐式扩展为一个 3×3 矩阵。
A = [1 1 1; 2 2 2; 3 3 3]
A =
1 1 1
2 2 2
3 3 3
m = [2 4 6]
m =
2 4 6
A - m
ans =
-1 -3 -5
0 -2 -4
1 -1 -3
行向量和列向量的大小兼容。如果您将一个 1×3 向量与一个 2×1 向量相加,则每个向量都会在 MATLAB 执行按元素加法之前隐式扩展为一个 2×3 矩阵。
x = [1 2 3]
x =
1 2 3
y = [10; 15]
y =
10
15
x + y
ans =
11 12 13
16 17 18
如果两个操作数的大小不兼容,则您将会收到错误消息。
A = [8 1 6; 3 5 7; 4 9 2]
A =
8 1 6
3 5 7
4 9 2
m = [2 4]
m =
2 4
A - m
Matrix dimensions must agree.
下表概述了 MATLAB 中的数组算术运算符。有关函数特定的信息,点击最后一列中的函数参考页的链接。
运算符 | 用途 | 说明 | 参考页 |
---|---|---|---|
| 加法 | A+B 表示将 A 和 B 加在一起。 | plus |
| 一元加法 | +A 表示返回 A。 | uplus |
| 减法 | A-B 表示从 A 中减去 B | minus |
| 一元减法 | -A 表示对 A 的元素求反。 | uminus |
.* | 按元素乘法 | A.*B 表示 A 和 B 的逐元素乘积。 | times |
.^ | 按元素求幂 | A.^B 表示包含元素 A(i,j) 的 B(i,j) 次幂的矩阵。 | power |
./ | 数组右除 | A./B 表示包含元素 A(i,j)/B(i,j) 的矩阵。 | rdivide |
.\ | 数组左除 | A.\B 表示包含元素 B(i,j)/A(i,j) 的矩阵。 | ldivide |
.' | 数组转置 | A.' 表示 A 的数组转置。对于复矩阵,这不涉及共轭。 | transpone |
矩阵运算
矩阵运算遵循线性代数的法则,与多维数组不兼容。运算双方所需输入的大小和形状取决于所执行的运算。对于非标量输入,矩阵运算符与对应的数组运算符计算出的答案通常不同。
例如,如果使用矩阵右除运算符 /
来除两个矩阵,这两个矩阵必须具有相同的列数。但是,如果使用矩阵乘法运算符 *
来乘两个矩阵,则这两个矩阵必须具有共同的内部维度。也即,第一个输入的列数必须等于第二个输入的行数。矩阵乘法运算符使用以下公式计算两个矩阵的乘积:
要了解这一点,可以计算两个矩阵的乘积。
A = [1 3;2 4]
A =
1 3
2 4
B = [3 0;1 5]
B =
3 0
1 5
A*B
ans =
6 15
10 20
前一个矩阵乘积与下面的按元素乘积不相等。
A.*B
ans =
3 0
2 20
下表概述了 MATLAB 中的矩阵算术运算符。有关函数特定的信息,点击最后一列中的函数参考页的链接。
运算符 | 用途 | 说明 | 参考页 |
---|---|---|---|
* | 矩阵乘法 | C = A*B 表示矩阵 A 和 B 的线性代数乘积。A 的列数必须与 B 的行数相等。 | mtimes |
| 矩阵左除 | x = A\B 是方程 Ax = B 的解。矩阵 A 和 B 必须拥有相同的行数。 | mldivide |
| 矩阵右除 | x = B/A 是方程 xA = B 的解。矩阵 A 和 B 必须拥有相同的列数。用左除运算符表示的话,B/A = (A'\B')'。 | nrdivide |
^ | 矩阵幂 | A^B 表示 A 的 B 次幂(如果 B 为标量)。对于 B 的其他值,计算包含特征值和特征向量。 | mpower |
' | 复共轭转置 | A' 表示 A 的线性代数转置。对于复矩阵,这是复共轭转置。 | ctranspone |