1、前言
矩阵运算是指对矩阵的各种操作和运算,包括矩阵加法、矩阵减法、矩阵乘法、矩阵转置、求逆矩阵等。以下是常见的矩阵运算:
-
矩阵加法:对应位置的元素相加,要求加数和被加数的维度相同。
A + B = | a11 b11 | + | a12 b12 | | a21 b21 | | a22 b22 |
-
矩阵减法:对应位置的元素相减,要求减数和被减数的维度相同。
A - B = | a11 b11 | - | a12 b12 | | a21 b21 | | a22 b22 |
-
矩阵乘法:按照行乘列的方式计算,要求左矩阵的列数等于右矩阵的行数。
AB = A的行 * B的列
-
矩阵转置:将矩阵的行与列进行交换,即将A的第i行第j列元素变为转置矩阵A^T的第j行第i列元素。
对于矩阵A,A^T表示其转置矩阵。
-
矩阵求逆:对于方阵,如果其行列式不为0,则可以求其逆矩阵A^-1。
如果A是一个可逆矩阵,那么AA^-1 = A^-1A = I,其中I是单位矩阵。
矩阵运算在线性代数、数值分析、工程计算等领域有广泛的应用。例如,在解线性方程组、特征值问题、最小二乘拟合、图像处理等方面都需要用到矩阵运算。熟练掌握矩阵运算的规则和性质对于理解和应用数学模型非常重要。
2、transpose, .' 转置向量或矩阵
语法
B = A.' 返回 A 的非共轭转置,即每个元素的行和列索引都会互换。
B = transpose(A) 是执行 A.' 的另一种方式,它可以为类启用运算符重载。
1)实矩阵转置
代码及运算
Matlab
A = magic(5)
B = A.'
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
B =
17 23 4 10 11
24 5 6 12 18
1 7 13 19 25
8 14 20 21 2
15 16 22 3 9
2)复矩阵转置
代码及运算
Matlab
A = [1 3 4-1i 2+2i; 0+1i 1-1i 5 6-1i]
B = A.'
A =
1.0000 + 0.0000i 3.0000 + 0.0000i 4.0000 - 1.0000i 2.0000 + 2.0000i
0.0000 + 1.0000i 1.0000 - 1.0000i 5.0000 + 0.0000i 6.0000 - 1.0000i
B =
1.0000 + 0.0000i 0.0000 + 1.0000i
3.0000 + 0.0000i 1.0000 - 1.0000i
4.0000 - 1.0000i 5.0000 + 0.0000i
2.0000 + 2.0000i 6.0000 - 1.0000i
3、 ctranspose, ' 复共轭转置
语法
B = A' 计算 A 的复共轭转置。
B = ctranspose(A) 是执行 A' 的替代方法
1)实矩阵的共轭转置
代码及运算
Matlab
A = [2 1; 9 7; 2 8; 3 5]
B = A'
A =
2 1
9 7
2 8
3 5
B =
2 9 2 3
1 7 8 5
2) 复矩阵的共轭转置
代码及运算
Matlab
A = [0-1i 2+1i;4+2i 0-2i]
B = A'
A =
0.0000 - 1.0000i 2.0000 + 1.0000i
4.0000 + 2.0000i 0.0000 - 2.0000i
B =
0.0000 + 1.0000i 4.0000 - 2.0000i
2.0000 - 1.0000i 0.0000 + 2.0000i
4、 mtimes, * 矩阵乘法
语法
C = A*B 是 A 和 B 的矩阵乘积。
C = mtimes(A,B) 是执行 A*B 这一操作的替代方法
1)将两个向量相乘
代码及运算
Matlab
A = [1 1 0 0];
B = [1; 2; 3; 4];
C1 = A*B
C2 = B*A
C1 =
3
C2 =
1 1 0 0
2 2 0 0
3 3 0 0
4 4 0 0
2)将两个数组相乘
代码及运算
Matlab
A = [1 3 5; 2 4 7];
B = [-5 8 11; 3 9 21; 4 0 8];
C = A*B
C =
24 35 114
30 52 162
5、 mpower, ^ 矩阵幂
语法
C = A^B 计算 A 的 B 次幂并将结果返回给 C。
C = mpower(A,B) 是执行 A^B 的替代方法,但很少使用。
1)方阵幂运算
代码及运算
Matlab
A = [1 2; 3 4];
C = A^2
C =
7 10
15 22
2)矩阵指数
代码及运算
Matlab
B = [0 1; 1 0];
C = 2^B
C =
1.2500 0.7500
0.7500 1.2500
6、 sqrtm 矩阵平方根
语法
X = sqrtm(A) 返回矩阵 A 的主要平方根(即 X*X = A)。
[X,residual] = sqrtm(A) 还会返回残差 residual = norm(A-X^2,1)/norm(A,1)
[X,alpha,condx] = sqrtm(A) 以 1-范数形式返回稳定因子 alpha 和 X 的矩阵平方根条件数的估计值,即 condx。
1)差分算子的矩阵平方根
代码及运算
Matlab
A = [5 -4 1 0 0; -4 6 -4 1 0; 1 -4 6 -4 1; 0 1 -4 6 -4; 0 0 1 -4 6]
X = sqrtm(A)
A =
5 -4 1 0 0
-4 6 -4 1 0
1 -4 6 -4 1
0 1 -4 6 -4
0 0 1 -4 6
X =
2.0015 -0.9971 0.0042 0.0046 0.0032
-0.9971 2.0062 -0.9904 0.0118 0.0094
0.0042 -0.9904 2.0171 -0.9746 0.0263
0.0046 0.0118 -0.9746 2.0503 -0.9200
0.0032 0.0094 0.0263 -0.9200 2.2700
2)具有多个平方根的矩阵
代码及运算
Matlab
A = [7 10; 15 22];
Y1 = [1.5667 1.7408; 2.6112 4.1779];
A - Y1*Y1
Y2 = [1 2; 3 4];
A - Y2*Y2
Y = sqrtm(A)
ans =
1.0e-03 *
-0.1258 -0.1997
-0.2995 -0.4254
ans =
0 0
0 0
Y =
1.5667 1.7408
2.6112 4.1779
7、expm 矩阵指数
语法
Y = expm(X) 计算 X 的矩阵指数。
1)指数运算
代码及运算
Matlab
A = [1 1 0; 0 0 2; 0 0 -1];
expm(A)
ans =
2.7183 1.7183 1.0862
0 1.0000 1.2642
0 0 0.3679
8、 logm 矩阵对数
语法
L = logm(A) 是 A 的主矩阵对数,即 expm(A) 的倒数。
1)矩阵对数
代码及运算
Matlab
A = [1 1 0; 0 0 2; 0 0 -1];
P = logm(Y)
P =
-0.3504 0.9294
1.3940 1.0436
9、cross 叉积
语法
C = cross(A,B) 返回 A 和 B 的叉积。
C = cross(A,B,dim) 计算数组 A 和 B 沿维度 dim 的叉积。
1)向量的叉积
代码及运算
Matlab
A = [4 -2 1];
B = [1 -1 3];
C = cross(A,B)
C =
-5 -11 -2
2)矩阵的叉积
代码及运算
Matlab
A = randi(15,3,5)
B = randi(25,3,5)
C = cross(A,B)
A =
13 15 6 3 10
11 1 12 8 11
5 7 12 7 12
B =
7 5 24 6 13
17 3 9 19 18
17 13 15 7 23
C =
102 -8 72 -77 37
-186 -160 198 21 -74
144 40 -234 9 37
10、 dot 点积
语法
C = dot(A,B) 返回 A 和 B 的标量点积。
C = dot(A,B,dim) 计算 A 和 B 沿维度 dim 的点积。
1)实数向量的点积
代码及运算
Matlab
A = [4 -1 2];
B = [2 -2 -1];
C = dot(A,B)
C =
8
2)复数向量的点积
代码及运算
Matlab
A = [1+i 1-i -1+i -1-i];
B = [3-4i 6-2i 1+2i 4+3i];
C = dot(A,B)
D = dot(A,A)
C =
1.0000 - 5.0000i
D =
8
3)矩阵的点积
代码及运算
Matlab
A = [1 2 3;4 5 6;7 8 9];
B = [9 8 7;6 5 4;3 2 1];
C = dot(A,B)
C =
54 57 54
4)多维数组的点积
代码及运算
Matlab
A = cat(3,[1 1;1 1],[2 3;4 5],[6 7;8 9])
B= cat(3,[2 2;2 2],[10 11;12 13],[14 15; 16 17])
C = dot(A,B,3)
A(:,:,1) =
1 1
1 1
A(:,:,2) =
2 3
4 5
A(:,:,3) =
6 7
8 9
B(:,:,1) =
2 2
2 2
B(:,:,2) =
10 11
12 13
B(:,:,3) =
14 15
16 17
C =
106 140
178 220