第三章 矩阵运算

矩阵是数组的一种表现形式。

生成矩阵

两种方式:1.枚举式直接赋值法。2.用函数

如何生成数值矩阵

1.实数矩阵输入规则
所有元素都要放在“[ ]”中;
同行元素用**“ ,”或“空格”** 分隔;
不同行的用“;”分隔。
在这里插入图片描述
2.向量输入
在这里插入图片描述3.利用函数生成矩阵
在这里插入图片描述
ps:
1.其中size函数返回该矩阵的行数和列数。
2.magic(n)魔方阵中,当n>2时有多个魔方阵,但是matlab中只产生一个特定的魔方阵。
在这里插入图片描述
习题1
在这里插入图片描述
代码
在这里插入图片描述
结果
单位阵所以式子成立
在这里插入图片描述
习题2:魔方阵
在这里插入图片描述
补充1:范德蒙矩阵
常用于各种通信系统的纠错编码中,例如里的所罗门编码以其为基础。
在这里插入图片描述
在这里插入图片描述
举例:生成一个1~5的范德蒙矩阵
在这里插入图片描述
补充2:希尔伯特矩阵
在这里插入图片描述
命令
在这里插入图片描述
例子
在这里插入图片描述
补充3:伴随阵
在这里插入图片描述
命令
在这里插入图片描述
例子:
在这里插入图片描述
补充4:帕斯卡矩阵
在这里插入图片描述
在这里插入图片描述
例子:生成一个5阶帕斯卡矩阵,验证它的逆矩阵所有元素也为整数
inv()是矩阵求逆运算
在这里插入图片描述

4.创建多维数组
方法一: 直接赋值法
在这里插入图片描述
方法二: 采用cat函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何生成复数矩阵

两种方法:
在这里插入图片描述

矩阵变换

一、对角阵
在这里插入图片描述
1.提取对角阵的对角线
在这里插入图片描述
2.构造对角矩阵
在这里插入图片描述
例子

%构造一个矩阵A,使A的第一行*1,第二行*2……
>> %分析:A左乘一个对角阵,该对角阵的对角线为1 2 3 4 5……即可实现上述功能。右乘则为对列的操作。
>> A=fix(0+(99-10+1)*rand(5))
>A =

      14             54             40             74              9       
      71             23              7             48             86       
      28             58             20             89              0       
      47             62             82              7             69       
      14             67             13             39             73       

>> D=diag(1:5)

D =

       1              0              0              0              0       
       0              2              0              0              0       
       0              0              3              0              0       
       0              0              0              4              0       
       0              0              0              0              5       

>> D*A

ans =

      14             54             40             74              9       
     142             46             14             96            172       
      84            174             60            267              0       
     188            248            328             28            276       
      70            335             65            195            365      

2.三角阵
在这里插入图片描述
1.生成一个与A大小相同的三角阵。
在这里插入图片描述
2.提取矩阵下三角函数tril() 函数。

3.矩阵转置
在这里插入图片描述
ps:若矩阵元素是实数则两个没区别,要是复数矩阵共轭转置则会产生不同结果。

4.矩阵的旋转
在这里插入图片描述

5.矩阵的反转
在这里插入图片描述

6.矩阵求逆
在这里插入图片描述
例题
在这里插入图片描述
解:

>> A=[1 2 3;1 4 9;1 8 27];
B=[5;-2;6];
%方法一,用逆矩阵法
>> x=inv(A)*B

x =
      23       
     -29/2     
      11/3     
>> %方法二,用左除法
x=A\B

x =
      23       
     -29/2     
      11/3     
>> %由上式可见两种方法是等价的

7.矩阵的乘法
特备注意维度上的匹配、矩阵的运算对象。
经验分享:
1.矩阵与数值型数据之间的乘法运算满足分配律。
2.此外,(A+C)×B-(A×B+C*B)的运算示例也反映出矩阵之间的乘法运算满足右分配律。
3.对于两个2×3矩阵的乘法运算AxC,由于矩阵A的列数3与矩阵C的行数2不相等,矩阵A与矩阵C尽管在维度上相同,但是参与乘法运算时维度不匹配,因此造成MATLAB编译错误。
4.读者可以在保证矩阵维度匹配的前提下,自行检验矩阵乘法是否满足交换律与左结合律(即形如:AX(B+C)=A×B+AxC)。结果:方阵满足交换律。
维度匹配下左结合律的验证:

A=[1 1 1;2 2 2;3 3 3;4 4 4];
B=[1 1 1 1;1 1 1 1;1 1 1 1];
C=[2 2 2 2;2 2 2 2;2 2 2 2];
>>  A*(B+C)
ans =
     9     9     9     9
    18    18    18    18
    27    27    27    27
    36    36    36    36

>> A*B+A*C
ans =
     9     9     9     9
    18    18    18    18
    27    27    27    27
    36    36    36    36

8.矩阵的除法
matlab中的矩阵除法运算被细分为左除右除运算。
1.对于参与矩阵除法运算的两个对象A与B而言若均为数值型标量,则左除与右除运算是等价的。
2.对于一般的二维矩阵A和B而言,左除与右除运算在对矩阵A和B的维度匹配上存在不同的要求:
在这里插入图片描述
经验分享:
在这里插入图片描述

9.矩阵幂运算
matlab中矩阵的幂运算对方阵有效,因为对于非方阵而言,相邻的运算矩阵无法
满足“维度匹配”的要求即左侧矩阵的列数不等于相邻右侧矩阵的行数,因此幂运算无法进行。
在这里插入图片描述

10.矩阵比较
矩阵的比较关系是针对于两个矩阵对应元素的,所以在使用关系运算时,首先应该
保证两个矩阵的维数一致或其中一个矩阵为标量。关系运算是对两个矩阵的对应运算进行比较,若关系满足,则将结果矩阵中该位置元素置为1,否则置0。
在这里插入图片描述
在这里插入图片描述

11.对矩阵元素进行取整
在这里插入图片描述
在这里插入图片描述

12.对矩阵进行逻辑运算
在这里插入图片描述
在这里插入图片描述

13.矩阵的分解
具体的讲述见Manii的如下文章:
视觉SLAM中的数学——解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
课本上的介绍如下:
在这里插入图片描述
例子
在这里插入图片描述
在这里插入图片描述

14.查找矩阵中的最值
在这里插入图片描述

15.查找矩阵中的元素
在这里插入图片描述
在这里插入图片描述

矩阵求值

1.行列式
在这里插入图片描述
例题:
在这里插入图片描述
答案:

>> format rat;
>> A=[1 2 3;-3 2 1;4 1 2];
>> det(inv(A))
ans =  -1/10    
>> 1/det(A)
ans = -1/10    

2.矩阵的秩
ps:关于秩的概念已经没有印象了,所以又学习了一遍,并将一些简单的手写笔记扫描了下来。点击右侧矩阵秩的手写笔记

例题:该例题中涉及到一些绘图的知识见后面内容
在这里插入图片描述
在这里插入图片描述
分析上图可知在这里插入图片描述

3.矩阵的迹
等于矩阵对角线元素之和,也等于矩阵的特征值之和。
命令:
在这里插入图片描述

>> A=[1 3 2;-3 2 1;4 1 2]
A =
       1              3              2       
      -3              2              1       
       4              1              2       
>> B=trace(A)
B =   5       
>> C=sum(diag(A))
C = 5       

4.矩阵的范数
用来度量矩阵或向量在某种意义上的长度。
所以范数在不同定义下的值也不同,如下:
在这里插入图片描述
三种定义分别对应的命令:
在这里插入图片描述
在这里插入图片描述

5.矩阵的条件数
等于矩阵的范数与该矩阵的逆矩阵的范数的乘积。
条件数越接近1,矩阵的性能越好,否则越差。
因为范数有三种不同情况,所以与之对应有三种范数命令。
在这里插入图片描述

矩阵的特征值和特征向量

这部分知识点见https://blog.csdn.net/qq_45562910/article/details/104178703

函数调用:
在这里插入图片描述

特征值的几何意义
在这里插入图片描述
在这里插入图片描述
当X与AX方向相同时称为特征方向 在该方向上有AX=λX
例题:
在这里插入图片描述

>> A=[0,0.5,0.5,3,5.5,5.5,6,6,3,0;0,0,6,0,6,0,0,8,1,8];
>> X=[1,0.5;0,1];
>> Y=X*A;
>> subplot(2,2,1);
>> fill(A(1,:),A(2,:),'r');
>> subplot(2,2,2);
>> fill(Y(1,:),Y(2,:),'r');

在这里插入图片描述
启示:在构建字库时,不必构建斜体字库,只需对正体字库进行线性变换即可。

稀疏矩阵

定义:零元素的个数远多于非零元素的个数。

矩阵的存储方式
完全存储: 将矩阵的全部元素按列存储,对于稀疏矩阵0也要存储。
系数存储: 只存储非零元素的值和位置。
在这里插入图片描述

>> A=sparse(eye(5))
A =
   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1

>> B=full(A)
B =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

在这里插入图片描述

>> A=sparse([1,2,2],[2,1,4],[4,5,-7])
A =
   (2,1)        5
   (1,2)        4
   (2,4)       -7
>> B=full(A)
B =
     0     4     0     0
     5     0     0    -7

在这里插入图片描述

>> A=[2,2,1;2,1,-1;2,4,3]
A =
     2     2     1
     2     1    -1
     2     4     3
>> B=spconvert(A)
B =
   (2,1)       -1
   (2,2)        1
   (2,4)        3

关于矩阵的一些命令表在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了18 篇原创文章 · 获赞 3 · 访问量 1392
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章