📄 1.txt
字号:
格式 polyvalm(P, A) %P为多项式系数向量,方阵A为多项式变量,返回多项式值。
1.2.7 矩阵转置
运算符:′
运算规则:若矩阵A的元素为实数,则与线性代数中矩阵的转置相同。
若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。
若仅希望转置,则用如下命令:A.′。
1.2.8 方阵的行列式
函数 det
格式 d = det(X) %返回方阵X的多项式的值
例1-42
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> D=det(A)
D =
0
1.2.9 逆与伪逆
命令 逆
函数 inv
格式 Y=inv(X) %求方阵X的逆矩阵。若X为奇异阵或近似奇异阵,将给出警告信息。
例1-43 求 的逆矩阵
方法一
>>A=[1 2 3; 2 2 1; 3 4 3];
>>Y=inv(A)或Y=A^(-1)
则结果显示为
Y =
1.0000 3.0000 -2.0000
-1.5000 -3.0000 2.5000
1.0000 1.0000 -1.0000
方法二:由增广矩阵 进行初等行变换
>>B=[1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1];
>>C=rref(B) %化行最简形
>>X=C(:, 4:6) %取矩阵C中的A^(-1)部分
显示结果如下:
C =
1.0000 0 0 1.0000 3.0000 -2.0000
0 1.0000 0 -1.5000 -3.0000 2.5000
0 0 1.0000 1.0000 1.0000 -1.0000
X =
1.0000 3.0000 -2.0000
-1.5000 -3.0000 2.5000
1.0000 1.0000 -1.0000
例1-44
>> A=[2 1 -1;2 1 2;1 -1 1];
>> format rat %用有理格式输出
>> D=inv(A)
D =
1/3 0 1/3
0 1/3 -2/3
-1/3 1/3 0
命令 伪逆
函数 pinv
格式 B = pinv(A) %求矩阵A的伪逆
B = pinv(A, tol) %tol为误差:max(size(A))*norm(A)*eps
说明 当矩阵为长方阵时,方程AX=I和XA=I至少有一个无解,这时A的伪逆能在某种程度上代表矩阵的逆,若A为非奇异矩阵,则pinv(A) = inv(A)。
例1-45
>> A=magic(5); %产生5阶魔方阵。
>> A=A(:,1:4) %取5阶魔方阵的前4列元素构成矩阵A。
A =
17 24 1 8
23 5 7 14
4 6 13 20
10 12 19 21
11 18 25 2
>> X=pinv(A) %计算A的伪逆
X =
-0.0041 0.0527 -0.0222 -0.0132 0.0069
0.0437 -0.0363 0.0040 0.0033 0.0038
-0.0305 0.0027 -0.0004 0.0068 0.0355
0.0060 -0.0041 0.0314 0.0211 -0.0315
1.2.10 矩阵的迹
函数 trace
格式 b=trace (A) %返回矩阵A的迹,即A的对角线元素之和。
1.2.11 矩阵和向量的范数
命令 向量的范数
函数 norm
格式 n = norm(X) %X为向量,求欧几里德范数,即 。
n = norm(X,inf) %求 -范数,即 。
n = norm(X,1) %求1-范数,即 。
n = norm(X,-inf) %求向量X的元素的绝对值的最小值,即 。
n = norm(X, p) %求p-范数,即 ,所以norm(X,2) = norm(X)。
命令 矩阵的范数
函数 norm
格式 n = norm(A) %A为矩阵,求欧几里德范数 ,等于A的最大奇异值。
n = norm(A,1) %求A的列范数 ,等于A的列向量的1-范数的最大值。
n = norm(A,2) %求A的欧几里德范数 ,和norm(A)相同。
n = norm(A,inf) %求行范数 ,等于A的行向量的1-范数的最大值
即:max(sum(abs(A')))。
n = norm(A, 'fro' ) %求矩阵A的Frobenius范数 ,
即sqrt(sum(diag(A'*A))),不能用矩阵p-范数的定义来求。
命令 范数的估计值
函数 normest
格式 nrm = normest(A) %矩阵A的2-范数(欧几里德范数)的估计值,相对误差小于106。
nrm = normest(A,tol) %tol为指定相对误差
[nrm,count] = normest(…) %count给出计算估计值的迭代次数
1.2.12 条件数
命令 矩阵的条件数
函数 cond
格式 c = cond(X) %求X的2-范数的条件数,即X的最大奇异值和最小奇异值的商。
c = cond(X,p) %求p-范数的条件数,p的值可以是1、2、inf或者’fro’。
说明 线性方程组AX=b的条件数是一个大于或者等于1的实数,用来衡量关于数据中的扰动,也就是A/或b对解X的灵敏度。一个差条件的方程组的条件数很大。条件数的定义为:
命令 1-范数的条件数估计
函数 condest
格式 c = condest (A) %方阵A的1-范数的条件数的下界估值。
[c,v] = condest (A) %v为向量,满足 ,即norm(A*v,1) =norm(A,1)*norm(v,1)/c。
[c,v] = condest (A,t) %求上面的c和v,同时显示出关于计算的步骤信息。如果t=1,则计算的每步都显示出来;如果t=-1,则给出商c/rcond(A)。
命令 矩阵可逆的条件数估值
函数 rcond
格式 c = rcond(A) %对于差条件矩阵A来说,给出一个接近于0的数;对于好条件矩阵A,则给出一个接近于1的数。
命令 特征值的条件数
函数 condeig
格式 c = condeig(A) %返回矩阵A的特征值的条件数
[V,D,c] = condeig(A) %D为A的特征值对角阵,V为A的特征向量。
1.2.13 矩阵的秩
函数 rank
格式 k = rank (A) %求矩阵A的秩
k = rank (A,tol) %tol为给定误差
1.2.14 特殊运算
1.矩阵对角线元素的抽取
函数 diag
格式 X = diag(v,k) %以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
X = diag(v) %以v为主对角线元素,其余元素为0构成X。
v = diag(X,k) %抽取X的第k条对角线元素构成向量v。k=0:抽取主对角线元素;k>0:抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。
v = diag(X) %抽取主对角线元素构成向量v。
例1-46
>> v=[1 2 3];
>> x=diag(v,-1)
x =
0 0 0 0
1 0 0 0
0 2 0 0
0 0 3 0
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> v=diag(A,1)
v =
2
6
2.上三角阵和下三角阵的抽取
函数 tril %取下三角部分
格式 L = tril(X) %抽取X的主对角线的下三角部分构成矩阵L
L = tril(X,k) %抽取X的第k条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。
函数 triu %取上三角部分
格式 U = triu(X) %抽取X的主对角线的上三角部分构成矩阵U
U = triu(X,k) %抽取X的第k条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。
例1-47
>> A=ones(4) %产生4阶全1阵
A =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> L=tril(A,1) %取下三角部分
L =
1 1 0 0
1 1 1 0
1 1 1 1
1 1 1 1
>> U=triu(A,-1) %取上三角部分
U =
1 1 1 1
1 1 1 1
0 1 1 1
0 0 1 1
3.矩阵的变维
矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。
(1)“:”变维
例1-48
> A=[1 2 3 4 5 6;6 7 8 9 0 1]
A =
1 2 3 4 5 6
6 7 8 9 0 1
>> B=ones(3,4)
B =
1 1 1 1
1 1 1 1
1 1 1 1
>> B(:)=A(:)
B =
1 7 4 0
6 3 9 6
2 8 5 1
(2)Reshape函数变维
格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m×n矩阵B
B = reshape(A,m,n,p,…) %将矩阵A变维为m×n×p×…
B = reshape(A,[m n p…]) %同上
B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数
相同。
例1-49 矩阵变维
>> a=[1:12];
>> b=reshape(a,2,6)
b =
1 3 5 7 9 11
2 4 6 8 10 12
4.矩阵的变向
(1)矩阵旋转
函数
格式 B = rot90 (A) %将矩阵A逆时针方向旋转90°
B = rot90 (A,k) %将矩阵A逆时针方向旋转(k×90°),k可取正负整数。
例1-50
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> Y1=rot90(A),Y2=rot90(A,-1)
Y1 = %逆时针方向旋转
3 6 9
2 5 8
1 4 7
Y2 = %顺时针方向旋转
7 4 1
8 5 2
9 6 3
(2)矩阵的左右翻转
函数 fliplr
格式 B = fliplr(A) %将矩阵A左右翻转
(3)矩阵的上下翻转
函数 flipud
格式 B = flipud(A) %将矩阵A上下翻转
例1-51
>> A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> B1=fliplr(A),B2=flipud(A)
B1 =
3 2 1
6 5 4
B2 =
4 5 6
1 2 3
(4)按指定维数翻转矩阵
函数 flipdim
格式 B = flipdim(A,dim) % flipdim(A,1) = flipud(A),并且flipdim(A,2)=fliplr(A)。
例1-52
>> A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> B1=flipdim(A,1),B2=flipdim(A,2)
B1 =
4 5 6
1 2 3
B2 =
3 2 1
6 5 4
(5)复制和平铺矩阵
函数 repmat
格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。
B = repmat(A,[m n]) %与上面一致
B = repmat(A,[m n p…]) %B由m×n×p×…个A块平铺而成
repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。
例1-53
>> A=[1 2;5 6]
A =
1 2
5 6
>> B=repmat(A,3,4)
B =
1 2 1 2 1 2 1 2
5 6 5 6 5 6 5 6
1 2 1 2 1 2 1 2
5 6 5 6 5 6 5 6
1 2 1 2 1 2 1 2
5 6 5 6 5 6 5 6
5.矩阵的比较关系
矩阵的比较关系是针对于两个矩阵对应元素的,所以在使用关系运算时,首先应该保证两个矩阵的维数一致或其中一个矩阵为标量。关系运算是对两个矩阵的对应运算进行比较,若关系满足,则将结果矩阵中该位置元素置为1,否则置0。
MATLAB的各种比较关系运算有见表1-1。
表1-1
运算符 含义 运算符 含义
> 大于关系 < 大于关系
= = 等于关系 >= 大于或等于关系
<= 小于或等于关系 ~ = 不等于关系
例1-54
>> A=[1 2 3 4;5 6 7 8];B=[0 2 1 4;0 7 7 2];
>> C1=A==B, C2=A>=B, C3=A~=B
C1 =
0 1 0 1
0 0 1 0
C2 =
1 1 1 1
1 0 1 1
C3 =
1 0 1 0
1 1 0 1
6.矩阵元素的数据变换
对于小数构成的矩阵A来说,如果我们想对它取整数,有以下几种方法:
(1)按-∞方向取整
函数 floor
格式 floor(A) %将A中元素按-∞方向取整,即取不足整数。
(2)按+∞方向取整
函数 ceil
格式 ceil(A) %将A中元素按+∞方向取整,即取过剩整数。
(3)四舍五入取整
函数 round
格式 round (A) %将A中元素按最近的整数取整,即四舍五入取整。
(4)按离0近的方向取整
函数 fix
格式 fix (A) %将A中元素按离0近的方向取整
例1-55
>> A=-1.5+4*rand(3)
A =
2.3005 0.4439 0.3259
-0.5754 2.0652 -1.4260
0.9274 1.5484 1.7856
>> B1=floor(A),B2=ceil(A),B3=round(A),B4=fix(A)
B1 =
2 0 0
-1 2 -2
0 1 1
B2 =
3 1 1
0 3 -1
1 2 2
B3 =
2 0 0
-1 2 -1
1 2 2
B4 =
2 0 0
0 2 -1
0 1 1
(5)矩阵的有理数形式
函数 rat
格式 [n,d]=rat (A) %将A表示为两个整数矩阵相除,即A=n./d。
例1-56 对于上例中的A
>> [n,d]=rat(A)
n =
444 95 131
-225 2059 -472
166 48 1491
d =
193 214 402
391 997 331
179 31 835
(6)矩阵元素的余数
函数 rem
格式 C = rem (A, x) %表示A矩阵除以模数x后的余数。若x=0,则定义rem(A, 0)=NaN,若x≠0,则整数部分由fix(A./x)表示,余数C=A-x.*fix (A./x)。允许模x为小数。
7.矩阵逻辑运算
设矩阵A和B都是m×n矩阵或其中之一为标量,在MATLAB中定义了如下的逻辑运算:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -