MATLAB快速入门教程(二)

二、MATLAB 矩阵运算基础

1.矩阵的加减运算

如果矩阵的行数=列数,那么矩阵是一个方阵,方阵有很多独特的性质。
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] A=\left[ \begin{matrix} a_{11} & a_{12}&\cdots&a_{1n}\\ a_{21} & a_{22}&\cdots&a_{2n}\\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} &\cdots &a_{nn}\\ \end{matrix} \right] A=a11a21an1a12a22an2a1na2nann
下面讲一下矩阵加减法,首先必须是两个同型矩阵才能进行加减运算。这里我们假设A、B矩阵都是m*n(m行,n列)的矩阵。
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] B = [ b 11 b 12 ⋯ b 1 n b 21 b 22 ⋯ b 2 n ⋮ ⋮ ⋱ ⋮ b m 1 b m 2 ⋯ b m n ] A=\left[ \begin{matrix} a_{11} & a_{12}&\cdots&a_{1n}\\ a_{21} & a_{22}&\cdots&a_{2n}\\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} &\cdots &a_{mn}\\ \end{matrix} \right] B=\left[ \begin{matrix} b_{11} & b_{12}&\cdots&b_{1n}\\ b_{21} & b_{22}&\cdots&b_{2n}\\ \vdots & \vdots & \ddots & \vdots \\ b_{m1} & b_{m2} &\cdots &b_{mn}\\ \end{matrix} \right] A=a11a21am1a12a22am2a1na2namnB=b11b21bm1b12b22bm2b1nb2nbmn
那么A±B的结果为
A ± B = [ a 11 ± b 11 a 12 ± b 12 ⋯ a 1 n ± b 1 n a 21 ± b 21 a 22 ± b 22 ⋯ a 2 n ± b 2 n ⋮ ⋮ ⋱ ⋮ a m 1 ± b m 1 a m 2 ± b m 2 ⋯ a m n ± b m n ] A\pm B=\left[ \begin{matrix} a_{11} \pm b_{11} & a_{12} \pm b_{12} &\cdots&a_{1n} \pm b_{1n}\\ a_{21} \pm b_{21} & a_{22} \pm b_{22} &\cdots&a_{2n} \pm b_{2n}\\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} \pm b_{m1} & a_{m2} \pm b_{m2} & \cdots & a_{mn} \pm b_{mn}\\ \end{matrix} \right] A±B=a11±b11a21±b21am1±bm1a12±b12a22±b22am2±bm2a1n±b1na2n±b2namn±bmn
在matlab中可以举例进行运算
在这里插入图片描述

2.矩阵的乘除运算和转置

⚪矩阵点乘

矩阵的点乘规则,首先依然要求A、B是两个同型的矩阵,这里我们还是设矩阵维度m*n。当然了相应的除法也是同样的道理。
A ⋅ B = [ a 11 b 11 a 12 b 12 ⋯ a 1 n b 1 n a 21 b 21 a 22 b 22 ⋯ a 2 n b 2 n ⋮ ⋮ ⋱ ⋮ a m 1 b m 1 a m 2 b m 2 ⋯ a m n b m n ] A\cdot B=\left[ \begin{matrix} a_{11}b_{11} & a_{12} b_{12} & \cdots & a_{1n}b_{1n}\\ a_{21}b_{21} & a_{22} b_{22} & \cdots & a_{2n}b_{2n}\\ \vdots & \vdots & \ddots & \vdots \\ a_{m1}b_{m1} & a_{m2} b_{m2} & \cdots & a_{mn}b_{mn}\\ \end{matrix} \right] AB=a11b11a21b21am1bm1a12b12a22b22am2bm2a1nb1na2nb2namnbmn
matlab执行点乘运算代码如下(以及除法)
在这里插入图片描述

⚪矩阵乘法规则

我们首先仍然对矩阵A、B有要求,要求左侧矩阵的列数等于右侧矩阵的行数。即矩阵A为xn,矩阵B为ny。
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a x 1 a x 2 ⋯ a x n ] B = [ b 11 b 12 ⋯ b 1 y b 21 b 22 ⋯ b 2 y ⋮ ⋮ ⋱ ⋮ b n 1 b n 2 ⋯ b n y ] A=\left[ \begin{matrix} a_{11} & a_{12}&\cdots&a_{1n}\\ a_{21} & a_{22}&\cdots&a_{2n}\\ \vdots & \vdots & \ddots & \vdots \\ a_{x1} & a_{x2} &\cdots &a_{xn}\\ \end{matrix} \right] B=\left[ \begin{matrix} b_{11} & b_{12}&\cdots&b_{1y}\\ b_{21} & b_{22}&\cdots&b_{2y}\\ \vdots & \vdots & \ddots & \vdots \\ b_{n1} & b_{n2} &\cdots &b_{ny}\\ \end{matrix} \right] A=a11a21ax1a12a22ax2a1na2naxnB=b11b21bn1b12b22bn2b1yb2ybny
我们假设A×B=C,那么矩阵C的第i行,第j列的值为
C i j = ∑ k = 1 n a i k b k j C_{ij}=\sum_{k=1}^n {a_{ik}b_{kj}} Cij=k=1naikbkj
我们举个简单的例子来看了解一下,同时我们也从这个例子中明白AB和BA结果是不同的
在这里插入图片描述

⚪矩阵的逆&单位矩阵

我们已经知道了矩阵乘法(叉乘),我们现在来定义一下矩阵的除法。
首先我们要先了解一下单位矩阵,很容易理解只有对角线上的值为1,其余值为0。
I = [ 1 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 1 ] I=\left[ \begin{matrix} 1 & 0 &\cdots & 0\\ 0 & 1 &\cdots & 0\\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 &\cdots & 1\\ \end{matrix} \right] I=100010001
我们可以看一下单位矩阵的性质(I是nn的单位矩阵,A是nn的任意方阵)
A × I = A ; I × A = A A\times I =A; I\times A=A A×I=AI×A=A
所以我们可以定义一下矩阵的逆 A − 1 A^{-1} A1
A × A − 1 = I A\times A^{-1}= I A×A1=I
所以我们定义矩阵A除矩阵B为
A × B − 1 A\times B^{-1} A×B1
这里我们还要注意一个问题,如前述有 A × B = C A\times B =C A×B=C,所以
A = C × B − 1 A=C\times B^{-1} A=C×B1
但是 B = C × A − 1 B=C\times A^{-1} B=C×A1是错误的
下面我们解释一下原因
我们可以这样理解除法
A × B = C A\times B =C A×B=C两侧同乘 B − 1 B^{-1} B1
A × B × B − 1 = C × B − 1 A\times B\times B^{-1}=C\times B^{-1} A×B×B1=C×B1
我们知道 B × B − 1 = I B\times B^{-1}=I B×B1=I,所以
A × I = C × B − 1 → A = C × B − 1 A\times I=C\times B^{-1}\rightarrow A=C\times B^{-1} A×I=C×B1A=C×B1
但是, A × B × A − 1 = C × A − 1 A\times B \times A^{-1}=C\times A^{-1} A×B×A1=C×A1之中,由于矩阵相乘的顺序问题,所以左侧不能化简为 B B B
所以正确的式子应该是
A − 1 × A × B = A − 1 × C → B = A − 1 × C A^{-1}\times A\times B=A^{-1}\times C \rightarrow B=A^{-1}\times C A1×A×B=A1×CB=A1×C

以上讨论基于A和B都是可逆矩阵
下面看一下matlab中如何初始化单位矩阵,如何求逆。
在这里插入图片描述

⚪矩阵的转置

转置矩阵表示为 A T A^T AT,规则为 A i j 替 换 为 A j i A_{ij}替换为A_{ji} AijAji
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] A T = [ a 11 a 21 ⋯ a m 1 a 12 a 22 ⋯ a m 2 ⋮ ⋮ ⋱ ⋮ a 1 n a 2 n ⋯ a m n ] A=\left[ \begin{matrix} a_{11} & a_{12}&\cdots&a_{1n}\\ a_{21} & a_{22}&\cdots&a_{2n}\\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} &\cdots &a_{mn}\\ \end{matrix} \right] A^T=\left[ \begin{matrix} a_{11} & a_{21}&\cdots&a_{m1}\\ a_{12} & a_{22}&\cdots&a_{m2}\\ \vdots & \vdots & \ddots & \vdots \\ a_{1n} & a_{2n} &\cdots &a_{mn}\\ \end{matrix} \right] A=a11a21am1a12a22am2a1na2namnAT=a11a12a1na21a22a2nam1am2amn
matlab的代码如下
在这里插入图片描述
这里介绍一个小小转置的性质 A × A T A\times A^T A×AT
A × A T = [ a 11 2 a 21 2 ⋯ a m 1 2 a 12 2 a 22 2 ⋯ a m 2 2 ⋮ ⋮ ⋱ ⋮ a 1 n 2 a 2 n 2 ⋯ a m n 2 ] A\times A^T=\left[ \begin{matrix} a_{11}^2 & a_{21}^2 & \cdots & a_{m1}^2\\ a_{12}^2 & a_{22}^2 & \cdots & a_{m2}^2\\ \vdots & \vdots & \ddots & \vdots \\ a_{1n}^2 & a_{2n}^2 &\cdots &a_{mn}^2\\ \end{matrix} \right] A×AT=a112a122a1n2a212a222a2n2am12am22amn2
因为matlab对矩阵运算有优化,所以其矩阵运算的速度非常快,所以我们算一批数据的平方,可以用此法计算,是一种优化。这里面也需要注意,在matlab中能矩阵运算的最好避免if或者for的迭代计算。

3.MATALB矩阵的操作

⚪初始化矩阵

为了方便复制代码,下面使用代码片来展示

A=[1,2,3;3,4,5];%其中分号表示行之间的分割
B=zeros(3,4);%表示一个3*4的0矩阵
C=ones(3,4);%表示一个3*4的1矩阵

⚪矩阵元素的表示&行列的表示&更改

详见代码的备注(嘻嘻

A=[1,2,3;3,4,5];
B=zeros(3,4);
C=ones(3,4);
A(1,2)=100;%A(1,2)表示A矩阵的第一行第二列,然后更改其值为100
disp(A);
B(1,:)=ones(1,4);%B(1,:)表示B的第一行,然后我们将第一行全部赋1
disp(B);
C(:,2)=zeros(3,1);%C(:,2)表示C的第二列,然后我们将第二列全部赋0
disp(C);

我们看一下输出结果

在这里插入图片描述

⚪矩阵区块的赋值

我们还可以在一个大矩阵的某个区域赋值

A=ones(5,5);%初始化一个5*5的1矩阵
disp(A);%打印初始的矩阵
A(2:4,3:4)=zeros(3,2);%将A矩阵2到4行的3到4列都赋值为0
disp(A);%展示第一次更改后的矩阵
C=[2,4;5,6;7,8];
A(2:4,3:4)=C;%给A矩阵再次赋值,将C矩阵赋值在A矩阵2到4行的3到4列的位置
disp(A);

看一下输出的结果
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值