Matlab中数组与矩阵运算
⽬录
简介
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]
matlab数组赋值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
/矩阵右除nrdivide
x = B/A 是⽅程 xA = B 的解。矩阵 A 和 B 必须拥有相同的列数。⽤左除运算符表⽰的话,B/A =
(A'\B')'。
^矩阵幂A^B 表⽰ A 的 B 次幂(如果 B 为标量)。对于 B 的其他值,计算包含特征值和特征向量。mpower
'复共轭转
A' 表⽰ A 的线性代数转置。对于复矩阵,这是复共轭转置。ctranspone
运算
⽤途说明参考页