matlab笔记二

Note2

特殊矩阵

zeros(3,4) % 零矩阵
ones(4,5) %一矩阵
eye(3) %单位矩阵
eye(3,4)
rand(2) % 元素大小0~1的随机矩阵
randn(2,3) % 均值为0,方差为1的随机矩阵

exA=20+30*rand(5) % [20,50]内均匀分布的5阶正态分布随机矩阵

%y=μ+σx
exB=0.6+sqrt(0.1)*randn(4) % 均值为0.6,方差为0.1的4阶正态分布随机矩阵

magic(3) % 魔方矩阵,行,列,对角线的和都为n*(n^2+1)/2
vander([1,3,5,4]) % 范德蒙矩阵,任意子方阵可逆,用于交错编码
hilb(4) % 希尔伯特矩阵,高度病态,病态程度与阶数有关
invhilb(4) % 希尔伯特逆矩阵.h[i][j]=1/(i+j-1)
% format rat就是矩阵用有理数形式显示,此句之后加上希尔伯特矩阵的产生语句即可得到分数形式

format rat
hilb(5)

矩阵变换

%对角阵、数量矩阵、单位阵、秩、迹、逆(伪逆)、行列式、条件数

%当矩阵中一个数改变时,整个矩阵发生的扰动程度就称为病态程度
%条件数用于衡量病态程度

%范数(norm):简单来说,就是衡量某个向量空间中每个向量的长度或者大小

%矩阵的秩(rank)与方程组求解、判断是否可逆有关(可逆与秩满互为充要条件)
%矩阵的迹为矩阵主对角线元素之和

%对角阵
A=[5,4,2,0,9] % 对角线元素
DA1=diag(A)
DA2=diag(A,1) % 主对角线向右上平移1个位置得到的矩阵,矩阵变大

%数量矩阵
B=eye(4)
DB=7*B

%取对角线元素
C=magic(4)
V1=diag(C) % V1即为对角线元素
V1=diag(C,1) % V1即为主对角线向右平移1个位置的对角线的元素(原矩阵基础上)

%三角阵
%上三角(triu)
A3=magic(7)
Atriu=triu(A3)
%下三角(tril)
Atril=tril(A3)
%小三角
AtriFra=triu(A3,2) % 第二个参数可负,主对角线向右平移2个位置后的对角线开始得到的(原矩阵基础上)

%转置
T=magic(3)
T1=T.'

%共轭转置
R=magic(3)
I=magic(3).*3-7
T2=R+I.*1i
T3=T2'

%旋转 rot90(A,K) 逆时针旋转k个90度
R1=magic(3)
R1rot=rot90(R1,1)

%左右翻转
F=magic(3)
F1=fliplr(F)

%上下翻转
F2=flipud(F)

%矩阵的逆,只有方阵才有逆,不为方阵则是伪逆
%inv
A=magic(3)
B=inv(A)

%ex:求解下列方程组
%x+2y+3z=5
%x+4y+9z=-2
%x+8y+27z=6

A=[1 2 3;1 4 9;1 8 27]
b=[5;-2;6]
x=inv(A)*b

%伪逆,对于非方阵,奇异阵(是方阵,但行列式为0),非满秩矩阵
%pinv
Ae=[3 1 1 1;1 3 1 1;1 1 3 1]
rank(Ae) % 行满秩
A2ans=pinv(Ae)
Ae*A2ans %得到3*3的单位矩阵

矩阵求值

-方阵的行列式(determinant)

%只有方阵才有行列式
format % 用小数形式表示
A1=rand(5)
A1res=det(A1)

-矩阵的秩与迹

A2=magic(4)
A2res=rank(A2)
A2ans=trace(A2)

-向量和矩阵的范数

%为了衡量其在某种意义下的大小

%向量的范数
V=[1 2 3 4]
norm(V,1) % 向量-1 范数 元素绝对值之和
norm(V,2) % 向量-2 范数 元素平方和的平方根
norm(V,inf) % 向量-∞ 范数 所有向量元素绝对值中的最大值

%矩阵的范数
E=magic(4)
norm(E,1) % 矩阵-1 范数 所有矩阵列元素绝对值之和的最大值
norm(E,2) % 矩阵-2 范数 矩阵的最大特征值的平方根
norm(E,inf) % 矩阵-∞ 范数 所有矩阵行元素绝对值之和的最大值

-矩阵的条件数

%在求解线性方程组Ax=b时,考虑摄动对解向量的影响程度,影响大的称为病态矩阵,反之为良性矩阵
%定义矩阵A的条件数=矩阵A的范数×矩阵A的逆的范数
%条件数是矩阵的属性,用来描述病态和良性程度
%条件数一定大于1,越接近1越好
F=rand(4)
F1=hilb(4)

cond(F,1) % 1-范数下的条件数
cond(F,2) % 2-范数下的条件数
cond(F,inf) % ∞-范数下的条件数

%希尔伯特矩阵高度病态
cond(F1,1)
cond(F1,2)
cond(F1,inf)

矩阵特征值与特征向量

对于n阶方阵A,求数λ和向量ξ,使得Aξ=λξ,则λA的特征值,ξ为对应的特征向量
求解方程Aξ=λξ,变形后得AλI)ξ=0,若使其有非零解,则系数行列式为0,即有
|AλI|=0

G=rand(5)

%一个矩阵的特征向量有无穷个,但是eig是只给出n个,其余的可由这n个向量线性组成

V1=eig(G) % 求解G的全部特征值,构成向量V1
[X,H]=eig(G) % H为矩阵G全部特征值构成的对角阵,X是各列相应的特征值对应的特征向量

稀疏矩阵

%稀疏矩阵 含有很多0元素
A1=[2 0 0 0;
    0 0 0 0;
    0 -5 0 0;
    3 0 0 0]

%采用稀疏方式存储的矩阵
A1=[2 0 0 0;
    0 0 0 0;
    0 -5 0 0;
    3 0 0 0]
%普通方式存储 2 0 0 3 0 0 -5 0 0 0 0 0 0 0 0 0
%稀疏方式存储 (1,1),2,(4,1),3,(3,2),-5 占用更少的内存

-稀疏存储方式的产生

S1=sparse(A1) % sparse:普通方式存储矩阵变稀疏方式存储
S2=sparse(4,6)

%sparse(u,v,S) u是行标号,v是列标号,S是非零值
S=[-5 24 9 17];
u=[1 3 5 2];
v=[1 2 2 4];
S3=sparse(u,v,S)
full(S3) %稀疏矩阵,但不是用系数存储方式存储的

[u,v,S]=find(S3) % 返回矩阵A中非零元素的下标和元素
full(S3) % 返回系数存储矩阵的完全存储方式 full<->sparse

%便捷产生一个稀疏存储矩阵 spconvert,与sparse(u,v,S)相同
A2=[2 2 1;
    3 1 -1;
    4 3 3;
    5 3 8;
    6 6 12;]
S4=spconvert(A2)
full(S4)

%对角系数矩阵 spdiags
B=[0 1 4 9 0;
   4 7 9 0 3;
   0 2 6 4 9] % 三条对角线的元素 
Bz=B.'
d=[-1 0 1].' % 哪三条对角线
full(spdiags(Bz,d,5,5))

posted on   dolires  阅读(29)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示