2.Matlab矩阵处理

矩阵变换:

%{

对角阵:
对角矩阵:只有对角线上有非零元素
数量矩阵:对角线上元素相等
单位矩阵:对角线上元素都为1
提取矩阵A的对角线元素
diag(A)                 提取矩阵A主对角线元素,产生一个列向量
diag(A,k)               提取矩阵A第k条对角线的元素,产生一个列向量
(主对角线k=0;向下为负,向上为正)
构造对角矩阵(V为向量)
diag(V)                 以向量V为主对角线元素,产生对角矩阵
diag(V,k)              以向量V为第k条对角线元素,产生对角矩阵


三角阵:
上三角阵:矩阵的对角线以下的元素全为0
下三角阵:矩阵的对角线以上的元素全为0
上三角矩阵:(up)
triu(A)             提取矩阵A的主对角线及以上的元素
triu(A,k)           提取矩阵A的第k条对角线及以上的元素
下三角矩阵:(low)
tril(A)  tril(A,k)  用法同up,变为以下


矩阵的转置
行——列转化
转置运算符:           .'        (小数点后加单引号)
共轭转置运算符:       '         (单引号)
(共轭转置是在转置的基础上取每个数的复共轭)
(在复数矩阵时两种转置不同,实数时相同)


矩阵的旋转
rot90(A,k)      将矩阵A逆时针方向旋转90度的k倍,当k=1时可省略


矩阵的翻转
fliplr(A)       对矩阵A实施左右翻转
flipud(A)       对矩阵A实施上下翻转


矩阵求逆
对方阵A,若存在同阶方阵B,使AB=BA=I(单位矩阵),则AB互为逆矩阵
inv(A)

%}


%先建立5×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]
D=diag(1:5)
D*A
%要将A的各列元素分别乘以对角阵的对角线元素。
A*D

%验证魔方阵的主对角线、副对角线元素之和相等。
A=magic(5);
D1=diag(A);
sum(D1)
B=flipud(A);
D2=diag(B);
sum(D2)

%用求逆矩阵的方法解线性方程组。
A=[1,2,3;1,4,9;1,8,27];
b=[5;-2;6];
x=inv(A)*b          %或者         x=A\b
% 解法:         A*x=b
%               A*inv(A)*x=inv(A)*b
%               x=inv(A)*b
 

矩阵求值:

% 矩阵的行列式值
% 验证 矩阵的行列式值与逆矩阵的行列式值倒数相等
A=[1,3,2;-3,2,1;4,1,2];
det(inv(A))==1/det(A)


% 矩阵的秩    rank(A)   矩阵线性无关的行数或列数
for n=3:20
    r(n)=rank(magic(n));
end
bar(r)
grid on
axis([2,21,0,20])
% 结论: 奇数阶魔方阵秩为n,即奇数阶魔方阵是满秩矩阵
% 一重偶数阶魔方阵秩为n/2+2    (n是2的倍数,非4的倍数)
% 双重偶数阶魔方阵秩为3        (n是4的倍数)


% 矩阵的迹    trace(A)   等于矩阵的对角线元素之和,也等于矩阵的特征值之和
A=[1,3,2;-3,2,1;4,1,2];
b=trace(A)              %直接求迹
t=sum(diag(A))          %对角元素和
e=sum(eig(A))           %特征值和


% 矩阵的范数              用来度量矩阵或向量在某种意义下的长度
% 向量的3种常用范数(矩阵类似):
% 向量元素的绝对值之和 向量元素平方和的平方根 所有向量元素绝对值中的最大值
% norm(V) or norm(V,2)    :计算向量(矩阵)V的2—范数
% norm(V,1)               :计算向量(矩阵)V的1—范数
% norm(V,inf)             :计算向量(矩阵)V的无穷—范数


% 矩阵的条件数             用于描述矩阵性能的参数
% 等于A的范数与A的逆矩阵范数的乘积(越接近1性能越好,反之越差)
% cond(A,1)                 1—范数条件下的条件数
% cond(A)或cond(A,2)        2—范数条件下
% cond(A,inf)               无穷大—范数条件下的条件数
% 求2-10阶希尔伯特矩阵的条件数:
for n=2:10
    c(n)=cond(hilb(n));
end
format long
c'

特殊矩阵:

%通用的特殊矩阵
A=zeros(3,3);
B=ones(3);
C=eye(size(A));             %产生对角线为1的矩阵,当为方阵时,得到单位矩阵
D=rand(3,4);                  %产生(0,1)区间均匀分布的随机矩阵
E=randn(3);                 %产生均值为0,方差为1的标准正太分布矩阵

%产生5阶[0,100]随机整数矩阵A,再产生均值为0.6、方差为0.1的5阶正态分布随机矩阵B
%验证(A+B)I=IA+BI(I为单位矩阵)
A=fix(101*rand(5));
B=0.6+sqrt(0.1)*randn(5);
C=eye(5);
(A+B)*C==C*A+B*C

%用于专门学科的特殊矩阵

%①魔方矩阵:Magic Square  产生8阶魔方阵,求其每行每列元素的和。
M=magic(8);
sum(M(1,:));
sum(M(:,1));

%②范德蒙矩阵:Vandermonde
V=vander(1:5)

%③希尔伯特矩阵:Hibert
H=hilb(4)

%④伴随矩阵:多项式p(x)=an*X^n+an-1*X^n-1+...+a1X+a0
%多项式伴随矩阵的特征值,等于其根
p=[1 -2 -5 6];
C=compan(p)
e=eig(C);           %特征值
r=roots(p);         %根
e==r

%⑤帕斯卡矩阵:(二项式定理,杨辉三角形),生成5阶帕斯卡矩阵,验证它的逆矩阵的所有元素也为整数。
P=pascal(5)
inv(P)

特征:

% 矩阵的特征值与特征向量:
% 设A是n阶方阵,如果数λ和n维非零列向量x使关系式Ax=λx成立
% 那么这样的数λ称为矩阵A特征值
% 非零向量x称为A的对应于特征值λ的特征向量

% E=eig(A)            矩阵A全部特征值构成向量E
% [X,D]=eig(A)        矩阵A全部特征值构成对角阵D,并产生矩阵X,X各列是相应的特征向量


R=[-1,2,0;2,-4,1;1,1,-6];
S=[1,2;2,3];
A=[R,zeros(3,2);zeros(2,3),S];
[X1,d1]=eig(R)
[X2,d2]=eig(S)
[X3,d3]=eig(A)


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


% 矩阵特征值的用途:
% 求解非线性方程组,常微分方程,及多项式方程的根;
% 求矩阵的迹,坐标变换;
% 工程振动问题,动力系统稳定性。
 

稀疏矩阵:

% 矩阵的存储方式
% 完全存储方式
% 稀疏存储方式:只存储矩阵非零元素的值和位置(存储顺序未改变)


% 稀疏矩阵方式的产生
% (1)转化
% A=sparse(S)     %将矩阵S转化为稀疏存储方式
% S=full(A)       %将矩阵A转化为完全存储方式
A=sparse(eye(5))
B=full(A)
whos
% (2)直接建立稀疏存储矩阵
A=sparse([1,2],[2,4],[4,-7])
B=full(A)
B=spconvert(A);
% (3)带状稀疏矩阵的稀疏存储(指所有非零元素集中在对角线上)
% [B,d]=spdiags(A);
% A=spdiags(B,d,m,n);
% (4)单位矩阵的稀疏存储
% speye(m,n) 返回一个稀疏存储的单位矩阵


% 稀疏矩阵的应用实例
% 求三对角线性方程组的解。
kf1=[1;1;2;1;0];
k0=[2;4;6;6;1];
k1=[0;3;1;4;2];
B=[kf1,k0,k1];
d=[-1;0;1];
A=spdiags(B,d,5,5);
f=[0;3;2;1;5];
x=A\f
 

猜你喜欢

转载自blog.csdn.net/qq_36502291/article/details/81207800
今日推荐