MATLAB矩阵处理
第二章:MATLAB矩阵处理
一.特殊矩阵
通用的特殊矩阵
zeros函数:产生全0矩阵,即零矩阵
ones:产生全1矩阵,即幺矩阵
eye函数:产生对角线为1的矩阵 当矩阵是方阵时,得到一个单位矩阵
rand函数:产生(0,1)区间均匀分布的随机矩阵
randn函数:产生均值为0,方差为1的标准正态分布随机矩阵
调用格式:
zeros(m):产生m *m零矩阵
zeros(m,n):产生m *n零矩阵
zeros(size(A)):产生与矩阵A同样大小的零矩阵
>> A=zeros(2,3) A =0 0 00 0 0 >> zeros(size(reshape(A,3,2))) ans =0 00 00 0
例:首先产生5阶两位随机整数矩阵A,再产生均值为0.6,方差为0.1的5阶正态分布随机矩阵B,最后验证(A+B)*I=IA+BI(I为单位矩阵)
分析:rand函数:产生(0,1)开区间均匀分布的随机数x
fix(a+(b-a+1)*x):产生[a,b]区间上均匀分布的随机整数
randn函数:产生均值为0,方差为1的标准正态分布随机数x
μ+σx:得到均值为μ,方差为σ^2的随机数
>> A=fix(10+(99-10+1)*rand(5)); %%产生5行5列矩阵,其值是10~99之间的整数
>>B=0.6+sqrt(0.1)*randn(5); %%产生均值为0.6,方差为0.1的5行5列正态随机分布矩阵
>>C=eye(5); %%产生5阶单位阵
>> (A+B)*C==C*A+B*C %%验证等式成立ans =5×5 logical 数组1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1
用于专门学科的特殊矩阵
1)魔方矩阵
n阶魔方阵由1,2,3……,n2共n2个整数组成,且每行每列以及主副对角线上各n个元素之和都相等
n阶魔方阵每行每列元素的和为(1+2+3+……+n2)/n=(n+n3)/2
n>2时,有很多不同的n阶魔方矩阵,MATLAB只提供一个特定的魔方阵
>> M=magic(3) M =8 1 63 5 74 9 2
>> M=magic(8); >> sum(M(1,:)) %%求每行的和 ans =260 >> sum(M(:,1)) %%求每列的和 ans =260
2)范德蒙矩阵
>> A=vander(1:5) %%以1,2,3,4,5为基础产生范德蒙矩阵 A =1 1 1 1 116 8 4 2 181 27 9 3 1256 64 16 4 1625 125 25 5 1
3)希尔伯特矩阵
>> format rat %%设置输出格式 以有理数格式输出 >> H=hilb(4) H =1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 1/4 1/5 1/6 1/7
4)伴随矩阵
>> %%生成多项式x^3-2x^2-5x+6的伴随矩阵 >> p=[1,-2,-5,6]; >> A=compan(p) %%生成的特征值等于多项式方程的根 A =2 5 -6 1 0 0 0 1 0
5)帕斯卡矩阵
第一行和第一列元素都为1,其余位置元素是该元素的左边元素与上面元素相加
>> format rat %%设置输出格式 以有理数格式输出 >> P=pascal(5) P =1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 >> inv(P) %%P的逆矩阵 ans =5 -10 10 -5 1 -10 30 -35 19 -4 10 -35 46 -27 6 -5 19 -27 17 -4 1 -4 6 -4 1
二.矩阵变换
对角阵
对角矩阵:只有对角线上有非零元素的矩阵
数量矩阵:对角线上的元素相等的对角矩阵
单位矩阵:对角线上的元素都为1的对角矩阵
1)提取矩阵的对角线元素
diag(A):提取矩阵A主对角线元素,产生一个列向量
diag(A,K):提取矩阵A第k条对角线的元素,产生一个列向量(主对角线为第0条,矩阵往上是第1,2……条,矩阵往下是第-1,-2,……条)
2)构造对角矩阵
diag(V):以向量V为主对角线元素,产生对角矩阵
diag(V,k):以向量V为第k条对角线元素,产生对角矩阵
>> 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] 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 %%D左乘A(对角阵的第一个元素乘以A的第一行,对角阵的第二个元素乘以A的第二行) ans =7 0 1 0 5 6 10 14 8 2 12 0 9 0 6 4 4 36 8 12 5 40 25 10 45 >> A*D %%D右乘A(A的各列元素分别乘以对角阵的对角线元素) ans =7 0 3 0 25 3 10 21 16 5 4 0 9 0 10 1 2 27 8 15 1 16 15 8 45
三角阵
上三角阵:矩阵的对角线以下的元素全为零的矩阵
triu(A):提取矩阵A的主对角线及以上的元素
triu(A,k):提取矩阵A的第k条对角线及以上的元素
>> triu(ones(4),-1) ans =1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 1
下三角阵:对角线以上的元素全为零的矩阵
tril函数
矩阵的转置
转置运算符是小数点后面接单引号(.')
共轭转置,其运算符号是单引号(’),它在转置的基础上还要取每个数的复共轭
>> A=[1,3;3+4i,1-2i] A =1 + 0i 3 + 0i 3 + 4i 1 - 2i >> A.' %%转置 ans =1 + 0i 3 + 4i 3 + 0i 1 - 2i >> A' %%共轭转置 ans =1 + 0i 3 - 4i 3 + 0i 1 + 2i
转置和共轭转置结果是不一样的,如果矩阵元素是实数,则其结果是一样的
矩阵的旋转
rot90(A,k):将矩阵A逆时针方向旋转90度的k倍,当k为1时可省略
>> A=[1,3,2;-3,2,1;4,1,2] A =1 3 2 -3 2 1 4 1 2 >> rot90(A) %%旋转90度 ans =2 1 2 3 2 1 1 -3 4 >> rot90(A,2) %%旋转180度 ans =2 1 4 1 2 -3 2 3 1
矩阵的翻转(第一行和最后一行交换位置,第二行和倒数第二行交换位置)
fliplr(A):对矩阵A实施左右翻转
flipud(A):对矩阵A实施上下翻转
>> %%验证魔方阵的主对角线,副对角线元素之和相等 >>A=magic(5); >>D1=diag(A); >>sum(D1) ans =65 >> B=flipud(A); %%可以使矩阵A的主对角线变为副对角线 >> D2=diag(B); >> sum(D2) ans =65
矩阵求逆
对于一个方阵A,如果存在一个与其同阶的方阵B,是的AB=BA=I(I为单位矩阵),则称B为A的逆矩阵,当然,A也是B的逆矩阵
inv(A):求方阵A的逆矩阵
>> A=[1,2,3;1,4,9;1,8,27];
>> b=[5;-2;6];
>> x=inv(A)*b %%A矩阵求逆
x =23 -29/2 11/3
>> x=A\b %%用左除运算符
x =23 -29/2 11/3
三.矩阵求值
方阵的行列式
把一个方阵看做一个行列式,并对其按行列式的规则求值,这个值就称为方阵所对应的行列式的值
det(A):求方阵A所对应行列式的值
%%验证A的逆的值等于1/A的值 >> format rat >> A=[1,3,2;-3,2,1;4,1,2] A =1 3 2 -3 2 1 4 1 2 >> det(inv(A)) ans =1/11 >> 1/det(A) ans =1/11
矩阵的秩
矩阵线性无关的行数或列数称为矩阵的秩
rank(A):求矩阵A的秩
>> %%求3~20阶魔方阵的秩 >> for n=3:20r(n)=rank(magic(n)); %%将值存放在向量r中end >> bar(r) %%绘制直方图 >> grid on >> axis([2,21,0,20])
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TppTeiP-1649903596646)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20220408094130697.png)]
规律:奇数阶魔方阵秩为n,即奇数阶魔方阵是满秩矩阵
一重偶数阶魔方阵秩为n/2+2(n是2的倍数,但非4的倍数)
双重偶数阶魔方阵秩均为3(阶数是4的倍数)
- 矩阵的迹
矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和
trace(A):求矩阵A的迹
>> 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
>> t=sum(diag(A))
t =5
矩阵和向量的范数(用来度量矩阵或向量在某种意义下的长度)
1)向量的三种常用范数
向量1—范数:向量元素的绝对值之和
向量2—范数:向量元素绝对值的平方和的平方根
向量∞—范数:所有向量元素绝对值中的最大值
2)求向量范数的调用格式
norm(V) 或norm(V,2):计算向量V的2—范数
norm(V,1) :计算向量V的1—范数
norm(V,inf) :计算向量的∞范数V
3)矩阵范数计算公式
矩阵A的1—范数:矩阵列元素的绝对值之和的最大值
矩阵A的2—范数:A’A矩阵的最大特征值的平方根
矩阵A的∞—范数:所有矩阵行元素绝对值之和的最大值
矩阵范数的调用格式同向量范数的调用格式相同
>> x=[2,0,1;-1,1,0;-3,3,0]
x =2 0 1 -1 1 0 -3 3 0
>> n=norm(x)
n =5909/1251
>> n=norm(x,1)
n =6
矩阵的条件数
矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积
条件数越接近1,矩阵的性能越好,反之,矩阵的性能越差
cond(A,1):计算A的1—范数下的条件数
cond(A) cond(A,2):计算A的2—范数下的条件数
cond(A,inf):计算A的∞—范数下的条件数
>> %%求2~10阶希尔伯特矩阵的条件数
>> for n=2:10c(n)=cond(hilb(n));end
>> format long
>> c'
ans =1.0e+13 *00.0000000000019280.0000000000524060.0000000015513740.0000000476607250.0000014951058640.0000475367356560.0015257575569040.0493153409747821.602491697370065
四.矩阵的特征值与特征向量
设A是n阶方阵,如果存在常数λ和n维非零列向量,使得等式Ax=λx成立,则称λ为A的特征值,x是对应特征值λ的特征向量
E=eig(A):求矩阵A的全部特征值,构成向量E
[X,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是相应的特征向量
>> A=[1,1,0;1,0,5;1,10,2]
A =1 1 01 0 51 10 2
>> [X,D]=eig(A)
X =0.072196186226992 0.975064063761619 0.0886192241952650.523368974057523 -0.075013465822402 -0.6356062180803130.849042182514069 -0.208861321230112 0.766910274178584
D =8.249260679947779 0 00 0.923068166892526 00 0 -6.172328846840312
>> A*X(:,1)
ans =0.5955651602845154.3174070987973367.003970291830360
>> D(1)*X(:,1) %%D1表示第一个特征值
ans =0.5955651602845144.3174070987973337.003970291830354
>> 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)
X1 =0.855336847706575 0.451748808798346 0.1898896924024490.470284611344323 -0.839453879712591 -0.5111056407186180.217327543786097 -0.302059923830942 0.838279743728139
d1 =0.099647729675864 0 00 -4.716463058067783 00 0 -6.383184671608076>> [X2,d2]=eig(S)
X2 =-0.850650808352040 0.5257311121191330.525731112119133 0.850650808352040
d2 =-0.236067977499790 00 4.236067977499790>> [X3,d3]=eig(A)
X3 =1 至 3 列0.855336847706575 0.451748808798346 0.1898896924024490.470284611344323 -0.839453879712591 -0.5111056407186180.217327543786097 -0.302059923830942 0.8382797437281390 0 00 0 04 至 5 列0 00 00 0-0.850650808352040 -0.5257311121191330.525731112119133 -0.850650808352040
d3 =1 至 3 列0.099647729675864 0 00 -4.716463058067783 00 0 -6.3831846716080760 0 00 0 04 至 5 列0 00 00 0-0.236067977499790 00 4.236067977499790
- 特征值的几何意义
eigshow函数,可以演示单位圆上的向量x和Ax之间的关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fw0BNDo3-1649903596649)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20220408104136679.png)]
>> 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');
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1VYYpSPU-1649903596650)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20220408104754729.png)]
五.稀疏矩阵
零元素的个数远远多于非零元素的个数的矩阵
矩阵的存储方式
完全存储方式 :全部元素按列存储
稀疏存储方式 :只存储矩阵的非零元素的值及其位置(可以节约存储空间) 按列存储
稀疏存储方式的产生
1)完全存储方式与稀疏存储方式之间的转化
A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A
S=full(A):将矩阵A转化为完全存储方式的矩阵S
>> 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 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1 >> whosName Size Bytes Class AttributesA 5x5 128 double sparse B 5x5 200 double
2)直接建立稀疏存储矩阵
sparse(m,n):生成一个m*n的所有元素都是零的系数矩阵
sparse(u,v,S):其中u,v,S是3个等长的向量。S是要建立的稀疏存储矩阵的非零元素,u(i), v(i)分别是 S(i)的行下标和列下标
>> 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 05 0 0 -7
使用spconvert函数直接建立稀疏存储矩阵,其调用格式为:B=spconvert(A)
A 为一个m3或 m4的矩阵,其每行表示一个非零元素,m是非零元素的个数
A(i,1) 表示第i个非零元素所在的行
A(i,2) 表示第i个非零元素所在的列
A(i,3) 表示第i个非零元素值的实部
A(i,4) 表示第i个非零元素值的虚部 若矩阵的全部元素都是实数,则无需第四列
>> A=[2,2,1;2,1,-1;2,4,3]
A =2 2 12 1 -12 4 3
>> B=spconvert(A)
B =(2,1) -1(2,2) 1(2,4) 3
3)带状稀疏矩阵的稀疏存储
稀疏矩阵两种类型:无规则结构和有规则结构
带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵
[B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d
A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m,n为原带状稀疏矩阵的行数与列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置
>> A=[11,0,0,12,0,0;0,21,0,0,22,0;0,0,31,0,0,32;41,0,0,42,0,0;0,51,0,0,52,0]
A =11 0 0 12 0 00 21 0 0 22 00 0 31 0 0 3241 0 0 42 0 00 51 0 0 52 0
>> [B,d]=spdiags(A)
B =0 11 120 21 220 31 3241 42 051 52 0
d =-303>> A=spdiags(B,d,5,6)
A =(1,1) 11(4,1) 41(2,2) 21(5,2) 51(3,3) 31(1,4) 12(4,4) 42(2,5) 22(5,5) 52(3,6) 32
4)单位矩阵的稀疏存储
speye(m,n):返回一个m*n的稀疏存储单位矩阵
>> speye(3)
ans =(1,1) 1(2,2) 1(3,3) 1
- 系数矩阵的应用实例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vx0PITPO-1649903596652)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20220408113745760.png)]
>> 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
x =-0.1666666666666670.1111111111111112.722222222222222-3.6111111111111118.611111111111111%%当参与运算的数据对象不全是稀疏矩阵时,所得结果是完全存储形式
B,d,5,6)
A =
(1,1) 11
(4,1) 41
(2,2) 21
(5,2) 51
(3,3) 31
(1,4) 12
(4,4) 42
(2,5) 22
(5,5) 52
(3,6) 32
4)单位矩阵的稀疏存储speye(m,n):返回一个m*n的稀疏存储单位矩阵
speye(3)
ans =
(1,1) 1
(2,2) 1
(3,3) 1
- 系数矩阵的应用实例[外链图片转存中...(img-Vx0PITPO-1649903596652)]
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
x =
-0.166666666666667
0.111111111111111
2.722222222222222
-3.611111111111111
8.611111111111111
%%当参与运算的数据对象不全是稀疏矩阵时,所得结果是完全存储形式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ieIsUtFm-1649903596653)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20220408113804890.png)]
MATLAB矩阵处理相关推荐
- 范德蒙德矩阵在MATLAB中怎么表示,Python 之 Python与MATLAB 矩阵操作总结
Python 之 Python与MATLAB 矩阵操作小结 一.线形代数理论基础 线形代数(linear algebra)是数学的一个分支,研究矩阵理论.向量空间.线性变换和有限维线形方程组等内容. ...
- c++以空格分开的输入数组_技术贴,MATLAB矩阵与数组汇总讲解
MATLAB既然以矩阵实验室命名,就说明该软件在矩阵计算方面具有非常优异的表现.在MATLAB中,一般情况下一个矩阵就是指一个长方形的数组.特殊情况有两个,一是单一元素的标量,二是只有一行或者一列的矩 ...
- matlab 矩阵加减乘除运算
文章目录 matlab 矩阵加减乘除运算 1 .加.减运算 2. 乘法 3.向量点积 4.向量叉乘 5.混合积 6.矩阵的卷积和多项式乘法 7.反褶积(解卷)和多项式除法运算 8.张量积 9. 除法运 ...
- matlab矩阵初等变换矩阵,实验一 MATLAB基本操作及矩阵初等运算
实验一 MATLAB 基本操作及矩阵初等运算 实验目的: 1.熟悉matlab 的界面: 2.熟练掌握matlab 的变量.矩阵定义和基本赋值符号: 3.熟练掌握matlab 矩阵的引用及矩阵初等运算 ...
- matlab矩阵内存预分配
matlab矩阵内存预分配就意味着,划定一个固定的内存块,各数据可直接按"行.列指数"存放到对应的元素中.若矩阵中不预配置内存.则随着"行.列指数"的变大.MA ...
- c++以空格分开的输入数组_技术贴,MATLAB矩阵与数组汇总讲解!
MATLAB既然以矩阵实验室命名,就说明该软件在矩阵计算方面具有非常优异的表现.在MATLAB中,一般情况下一个矩阵就是指一个长方形的数组.特殊情况有两个,一是单一元素的标量,二是只有一行或者一列的矩 ...
- c++实现Matlab矩阵Matrix类(实矩阵Matrix、复矩阵CMatrix)
全栈工程师开发手册 (作者:栾鹏) matlab2c动态链接库下载 matlab库函数大全 matlab2c基础教程 matlab2c开发全解教程 开发注意事项: 1.目前matlab2c对矩阵的实现 ...
- 中南大学 09 MATLAB 矩阵的处理
中南大学 09 MATLAB 矩阵的处理 通用的特殊矩阵 zeros函数 ones函数 产生2位数的5阶随机矩阵(取值在10-99之间的整数) 产生一个均值为0.6 方差为0.1的矩阵 魔方矩阵(Ma ...
- matlab矩阵 代表什么,matlab中矩阵AB是什么意思
Q1:matlab矩阵中的'代表什么意思 A(1)是指矩阵中的第一个元素. matlab中矩阵的排列是按照从上往下,从左往右的: 比如说,一列数,给转化为矩阵,排列如下: >> a=1:1 ...
- matlab 矩阵与数比较,MATLAB 对矩阵中的数据进行大小比较
用matlab对矩阵进行高斯消元 %求解例题2.1%高斯法求解线性方程组Ax=b%A为输入矩阵系数,b为方程组右端系数%方程组的解保存在x变量中%先输入方程系数A=[1 2 3;2 7 5;1& ...
最新文章
- ELMo:基于上下文的语言模型,5分钟构建语义搜索引擎代码实战
- 安装和使用Smokeping(二)
- MyBatis-22MyBatis缓存配置【一级缓存】
- MySQL 特殊参数
- JDK 是如何判断两个对象是否相同的?判断的流程是什么?
- php默认语法,php语法基本规则
- iscsi:IO操作流程(一)
- cisco交换机命令大全(11)
- The run destination 设备名称 is not valid for Running the scheme '项目名称'.
- asp导出word中文乱码_你还在加班吗?“蟒蛇”办公自动化Word篇——一招搞定300页文档
- Codeforces 1013
- 火车头采集器文章伪原创插件工具
- HMS Core 3D精准室内定位技术,打造“店铺级”出行体验
- C# 基础 (3) 垃圾回收机制(Garbage Collector)
- Axure 进阶教程
- P2141 [NOIP2014 普及组] 珠心算测验
- BF的数据结构题单-提高组——P1783 海滩防御
- 帆软FineBI随时记
- 解锁iPhone密码锁?
- 服务器硬件升级解决方案
热门文章
- 西安交通大学城市学院计算机课本,西安交通大学城市学院计算机系赴陕西科技大学进行专业课“课程思政”教学交流...
- 安防如何切入出疆铁路建设 实现“名利双收”?
- 深入理解深度学习——图嵌入(Graph Embedding)
- I - Fire Game
- 聚簇索引与非聚簇索引(也叫二级索引)
- abap mm后台表_SAP常用后台数据表大全(FI-CO-MM-SD-PP等).pdf
- iOS体会篇 大学编程到公司的过程
- adb 常用命令解析
- 蓝桥杯算法竞赛系列第0章——蓝桥必考点及标准模板库STL(上)(万字博文,建议抱走)
- 信步26026 原厂bios_BIOS维修网站-修改Intel原厂主板CMOS默认设置