两种方式: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函数
%构造一个矩阵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:若矩阵元素是实数则两个没区别,要是复数矩阵共轭转置则会产生不同结果。
>> 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。
13.矩阵的分解
具体的讲述见Manii的如下文章:
视觉SLAM中的数学——解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
课本上的介绍如下:
例子
>> 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