慕课matlab学习 第二章-08

矩阵变换


% 第二节 矩阵变换
% 矩阵变换


%主要内容
% 求解 【对角阵】 【三角阵】 【矩阵的转置】 【矩阵的旋转】
%      【矩阵的翻转】 【矩阵求逆】



% 对角矩阵


% 3种对角矩阵:
% 对角矩阵:只有对角线上有非零元素的矩阵。
% 数量矩阵:对角线上的元素相等的对角矩阵。
% 单位矩阵:对角线上的元素都为1的对角矩阵。

% 1、提取矩阵的对角线元素
% diag(A):提取矩阵的主对角线元素,产生一个向量
% diag(v,k) :以向量V为k条对角线元素,产生对角矩阵。

% eg: 
%1先建立5x 5矩阵A,然后将A的第一行元素乘以1, 第二行乘
%2...第五行乘以5。
A=[7,0,1,0,5;3,5,7,4,1;4,0,3,0,2;1,1,9,2,3;1,8,5,2,9]
diag(A) %提取主对角线元素
diag(A,3) % 好像有点问题,没有理解 
% 注:diag(A,3) 主对角线为 diag(A,0),向上的对角线为>0的对角线


D=diag(1:1:5) % 等价于 diag(15)
D*A % D矩阵左乘 A 可以实现 矩阵A列向量 的倍乘(注:首先保证 D 是对角阵)
A*D % D矩阵右乘 A 可以实现 矩阵A行向量 的倍乘(注:首先保证 D 是对角阵)


%  三角阵
% 上三角阵:矩阵的对角线以下的元素全为零的矩阵。
% 下三角阵:对角线以上的元素全为零的矩阵。

%上三角矩阵
% triu(A):提取矩阵A的主对角线及以上的元素。
% triu(A,k):提取矩阵A的第k条对角线及以上的元素。
ones(4)
triu(ones(4)) %提取得到的上三角矩阵
triu(ones(4),-1)    %提取得到离主对角线下方为1 的上三角矩阵
triu(ones(4),1)     %提取得到离主对角线上方方为1 的上三角矩阵
triu(ones(4),2)     %提取得到离主对角线上方方为2 的上三角矩阵
% 注:不好理解的话可以看下运行后的效果,可很好的分析triu(A,k)中k值的理解

% 下三角矩阵
% tril(A):提取矩阵A的主对角线及以下的元素。
% tril(A,k):提取矩阵A的第k条对角线及以下的元素。
ones(4)
tril(ones(4)) %提取得到的下三角矩阵
tril(ones(4),-1)    %提取得到离主对角线下方为1 的下三角矩阵
tril(ones(4),1)     %提取得到离主对角线下方方为1 的下三角矩阵
tril(ones(4),2)     %提取得到离主对角线下方方为2 的下三角矩阵



% 矩阵的转置
% 转置矩阵的定义:m×n矩阵A的行换成同序数的列得到一个n×m矩阵,此矩阵叫做A的转置矩阵
% https://baike.baidu.com/item/%E7%9F%A9%E9%98%B5%E8%BD%AC%E7%BD%AE/4150715?fr=aladdin
% 转置运算符是小数点后面接单引号(.')
% 共轭转置,其运算符是单引号('),它再转置的基础上还要取每个数的复共轭
% eg 区分转置 和 共轭转置
A=[1,3;3+4i,1-2i]
A.'  % A的转置
A'   % A的共轭转置 ,特点 ;也是转置,但是虚部需要取反(正的变负的,负的变正的)

% 矩阵旋转
% rot90(A,k):将矩阵A(逆时针)方向旋转90°的k倍,当k为1时可省略。
% eg 
B=[1,2,3;4,5,6;7,8,9]
rot90(B) % 等价于rot90(B,1) ,矩阵逆时针旋转90rot90(B,1)% 等价于rot90(B)
rot90(B,2)% 矩阵逆时针旋转90*2=180% 矩阵翻转
% fliplr(A):对矩阵A实施左右翻转。(lr: left right)
fliplr(B)
% flipud(A):对矩阵A实施上下翻转。( ud : up  down)
flipud(B)


% eg 验证魔方阵的主对角线 副对角线 元素之和相等
A=magic(5)
D1=diag(A) % 得到的是主对角线组成的列向量
sum(D1) % 主对角线元素之和

flipud(A)
D2=diag(flipud(A)) %对矩阵 A进行上下翻转,这样副对角线就变成了主对角线
sum(D2)     %  副对角线元素之和


% 矩阵求逆
% 定义:对于一个方阵A,如果存在一个与其同阶的方阵B,使
% 得AB=BA=I (I为单位矩阵),则称B为A的逆矩阵,当然,
% A也是B的逆矩阵。                        
% inv(A) 求方阵的逆矩阵

% eg 用逆矩阵求解线性方程组
% x+2y+3z=5
% x+4y+9z=-2
% x+8y+27z=6
% 等价于 A*[x,y,z]^T=[5,-2,6]^T
% A=[1,2,3;1,4,9;1,8,27] 是x,y,z 前面参数组成的矩阵
% 且 A*[x,y,z]^T=[5,-2,6]^T 满足 [3*3] * [3*1]==[3*1] 的矩阵乘法运算
% 所以 求 [x,y,z] 只需要左乘 A的逆就可以进行求解
% matlab 实现
A=[1,2,3;1,4,9;1,8,27]
b=[5;-2;6] % 是一个 3*1 的列向量(注:不要生成了 行向量)
x=inv(A)*b % 等价 x=A\b  读法: A左除b
x=A\b      % 等价 x=inv(A)*b  读法 b 乘以 A的逆


更多文章请关注《万象专栏》

本栏目由《康祺惠购APP》独家赞助