37、matlab矩阵运算

1、前言

矩阵运算是指对矩阵的各种操作和运算,包括矩阵加法、矩阵减法、矩阵乘法、矩阵转置、求逆矩阵等。以下是常见的矩阵运算:

  1. 矩阵加法:对应位置的元素相加,要求加数和被加数的维度相同。

    A + B = | a11 b11 | + | a12 b12 | | a21 b21 | | a22 b22 |

  2. 矩阵减法:对应位置的元素相减,要求减数和被减数的维度相同。

    A - B = | a11 b11 | - | a12 b12 | | a21 b21 | | a22 b22 |

  3. 矩阵乘法:按照行乘列的方式计算,要求左矩阵的列数等于右矩阵的行数。

    AB = A的行 * B的列

  4. 矩阵转置:将矩阵的行与列进行交换,即将A的第i行第j列元素变为转置矩阵A^T的第j行第i列元素。

    对于矩阵A,A^T表示其转置矩阵。

  5. 矩阵求逆:对于方阵,如果其行列式不为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 ```

相关推荐
林泽毅34 分钟前
SwanLab Slack通知插件:让AI训练状态同步更及时
深度学习·机器学习·强化学习
Shockang1 小时前
机器学习的一百个概念(5)数据增强
人工智能·机器学习
机器学习之心2 小时前
区间预测 | QRTCN时间卷积神经网络分位数回归时间序列区间预测模型(Matlab完整源码和数据)
matlab·回归·cnn·分位数回归·时间卷积神经网络·qrtcn·区间预测模型
蚍蜉撼树谈何易4 小时前
机器学习的定义及分类
人工智能·机器学习·分类
gang_unerry11 小时前
量子退火与机器学习(2):少量实验即可找到新材料,黑盒优化➕量子退火
人工智能·机器学习·量子计算·量子退火
Chaos_Wang_12 小时前
NLP高频面试题(二十八)——Reward model是如何训练的,怎么训练一个比较好的Reward model
人工智能·机器学习·自然语言处理
vonchenchen113 小时前
nara wpe去混响学习笔记
机器学习·音视频·音频·信息与通信·信号处理
jndingxin13 小时前
OpenCV 图形API(5)API参考:数学运算用于执行图像或矩阵加法操作的函数add()
opencv·webpack·矩阵
邴越14 小时前
人工智能、机器学习经典计算机课程
人工智能·机器学习