第3章 Matlab中的矩阵及其运算.docx

上传人:b****8 文档编号:30768222 上传时间:2023-08-23 格式:DOCX 页数:24 大小:21.08KB
下载 相关 举报
第3章 Matlab中的矩阵及其运算.docx_第1页
第1页 / 共24页
第3章 Matlab中的矩阵及其运算.docx_第2页
第2页 / 共24页
第3章 Matlab中的矩阵及其运算.docx_第3页
第3页 / 共24页
第3章 Matlab中的矩阵及其运算.docx_第4页
第4页 / 共24页
第3章 Matlab中的矩阵及其运算.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

第3章 Matlab中的矩阵及其运算.docx

《第3章 Matlab中的矩阵及其运算.docx》由会员分享,可在线阅读,更多相关《第3章 Matlab中的矩阵及其运算.docx(24页珍藏版)》请在冰豆网上搜索。

第3章 Matlab中的矩阵及其运算.docx

第3章Matlab中的矩阵及其运算

Matlab中的矩阵及其运算

矩阵是数学中一个十分重要的概念,其应用能够十分广泛,Matlab中最基本最重要的功能就是进行矩阵运算,其所有数值功能都已矩阵为基本单元来实现,掌握Matlab中的矩阵运算是十分重要的。

关键词:

Matlab矩阵特殊矩阵

一、矩阵的生成

1、矩阵生成有多种方式,通常使用的有四种:

(1)在命令窗口中直接输入矩阵

(2)通过语句和函数产生矩阵

(3)在M文件中建立矩阵

(4)从外部的数据文件中导入矩阵

其中第一种是最简单常用的创建数值矩阵的方法,较适合创建较小的简单矩阵。

把矩阵的元素直接排列到方括号中,每行内元素用空格或逗号相隔,行与行之间的内容用分号相隔。

如:

matrix=[1,1,1,1;2,2,2,2;3,3,3,3;4,4,4,4]%逗号形式相隔

matrix=

1111

2222

3333

4444

matrix=[1111;2222;3333;4444]%采用空格形式相隔

matrix=

1111

2222

3333

4444

2、特殊矩阵的生成

1、零矩阵和全1矩阵

零矩阵指各个元素都为零的矩阵。

(1)A=zeros(M,N)命令中,A为要生成的零矩阵,M和N分别为生成矩阵的行和列。

(2)若存在已知矩阵B,要生成与B维数相同的矩阵,可以使用命令A=zeros(size(B))。

(3)要生成方阵时,可使用命令A=zeros(N)来生成N阶方针。

全1矩阵用ones函数实现。

A=zeros(4,5)

A=

00000

00000

00000

00000

B=[12345;23456;98765;87654]

B=

12345

23456

98765

87654

A=zeros(size(B))

A=

00000

00000

00000

00000

A=zeros(5)

A=

00000

00000

00000

00000

00000

C=ones(5,6)

C=

111111

111111

111111

111111

111111

C=ones(3)

C=

111

111

111

2、单位矩阵的生成

(1)A=eye(M,N)命令,可生成单位矩阵,M和N分别为生成单位矩阵的行和列。

(2)若存在已知矩阵B,要生成一个与B维数相同的单位矩阵,可以使用命令A=eye(size(B))。

(3)也可以使用A=eye(N)来生成N阶方阵。

A=eye(4,5)

A=

10000

01000

00100

00010

A=eye(size(B))%B与上例相同

A=

10000

01000

00100

00010

A=eye(4)

A=

1000

0100

0010

0001

3对角矩阵的生成

对角矩阵指的是对角线上的元素为任意数,其它元素为0的矩阵。

(1)A=diag(V,K)命令中,V为某个向量,K为向量V偏离主对角线的列数。

K=0时表示V为主对角线;K>0的数时表示V在主对角线上;K<0表示V在主对角线以下。

(2)A=diag(V)相当于A=diag(V,0)

v=[19816]

diag(v,1)

ans=

010000

009000

000800

000010

000006

000000

diag(v,-1)

ans=

000000

100000

090000

008000

000100

000060

diag(v,-1)

ans=

000000

100000

090000

008000

000100

000060

4、上三角阵和下三角阵的生成

(1)triu(X,K)命令中,K=0表示主对角线以上部分(包括主对角线);K>0表示矩阵的主对角线K列以上的部分;K<0表示矩阵的主对角线K列以下的部分。

triu(X)等价于triu(X,0)。

B=[1980;1981;1949;2008]

B=

1980

1981

1949

2008

triu(B,2)

ans=

0080

0001

0000

0000

triu(B)

ans=

1980

0981

0049

0008

triu(B,0)

ans=

1980

0981

0049

0008

5、随机矩阵的生成

随机矩阵之矩阵元素是由随机数构成的矩阵。

(1)rand(N)生成N阶随机矩阵,生成的元素值在区间(0.0,1.0)之间。

(2)rand(M,N)命令生成M*N阶随机矩阵,生成的元素值在区间(0.0,1.0)之间。

(3)randn(N)命令生成N阶随机矩阵,生成的元素服从正态分布N(0,1)。

(4)randn(M,N)命令生成M*N阶随机矩阵,生成的元素服从正态分布N(0,1)。

rand(5)

ans=

0.95010.76210.61540.40570.0579

0.23110.45650.79190.93550.3529

0.60680.01850.92180.91690.8132

0.48600.82140.73820.41030.0099

0.89130.44470.17630.89360.1389

randn(5)

ans=

-0.43261.1909-0.18670.11390.2944

-1.66561.18920.72581.0668-1.3362

0.1253-0.0376-0.58830.05930.7143

0.28770.32732.1832-0.09561.6236

-1.14650.1746-0.1364-0.8323-0.6918

6、范德蒙德矩阵的生成

范德蒙德矩阵是线性代数中一个很重要的矩阵。

用A=vander(V),其中有V(i,j)=V(i)^(n-j)。

v=[13579];A=vander(v)

A=

11111

8127931

6251252551

24013434971

65617298191

7、魔术矩阵

魔术矩阵是一个方阵,且方针的每一行每一列以及每条主对角线的元素之和都相同(2阶方阵除外),用magic函数生成魔术矩阵。

Magic(N)命令生成N阶的魔术矩阵,使矩阵的每一行每一列以及主对角线的元素和相等;N>0或N=2除外。

magic

(2)

ans=

13

42

magic(3)

ans=

816

357

492

magic(4)

ans=

162313

511108

97612

414151

7、Hilbert矩阵和反Hilbert矩阵的生成

Hilbert矩阵是有名的病态矩阵,它的第i行第j列的元素值为1/(i+j-1)。

(1)hilb(N)命令生成N阶的Hilbert矩阵。

(2)invhilb(N)命令生成N阶反Hilbert矩阵。

A=hilb(5)

A=

1.00000.50000.33330.25000.2000

0.50000.33330.25000.20000.1667

0.33330.25000.20000.16670.1429

0.25000.20000.16670.14290.1250

0.20000.16670.14290.12500.1111

B=invhilb(5)

B=

25-3001050-1400630

-3004800-1890026880-12600

1050-1890079380-11760056700

-140026880-117600179200-88200

630-1260056700-8820044100

C=A*B

C=

1.00000000

01.0000000

001.0000-0.00000

0001.00000

00001.0000

8、Hadamard矩阵

Hadamard矩阵为元素1或-1组成,并且满足条件H’*H=N*I,Hadamard矩阵的维数为N,I为N阶单位矩阵,Hadamard矩阵在组合数学,数值分析和信号处理方面都有广泛的应用。

与要注意的是,当N=1时,Hadamard矩阵就是1,当N>=2时,Hadamard的维数N有一定的要求,即N、N/12或N/20是2的正整数次幂。

Hadamard(8)

ans=

11111111

1-11-11-11-1

11-1-111-1-1

1-1-111-1-11

1111-1-1-1-1

1-11-1-11-11

11-1-1-1-111

1-1-11-111-1

hadamard(6)

?

?

?

Errorusing==>hadamard

nmustbeanintegerandn,n/12orn/20mustbeapowerof2.

9、Hankel矩阵

Hankel

矩阵是针对于一个向量C或者两个向量C或R,而生成的一个对称矩阵。

矩阵中各元素满足如下规律:

(1)当只有一个向量C时,H=hankel(C):

以向量C作为Hankel

矩阵的第一列;反对角线上的各元素相等;主反对角线下方元素为0。

(3)当有两个向量C和R时,H=hankel(C,R):

以向量C作为Hankel矩阵的的第一列;以向量R作为矩阵的第一行;当C的第一个元素不同于R的第一个元素时,取C的第一个元素作为主反对角上的元素。

>>c=[5678910];

r=[67891011];

H=hankel(c)

H=

5678910

6789100

7891000

8910000

9100000

1000000

>>H=hankel(c,r)

Warning:

Lastelementofinputcolumndoesnotmatchfirstelementofinputrow.

Columnwinsanti-diagonalconflict.

(Type"warningoffMATLAB:

hankel:

AntiDiagonalConflict"tosuppressthiswarning.)

>InC:

\MATLAB6p5\toolbox\matlab\elmat\hankel.matline27

H=

5678910

6789107

7891078

8910789

91078910

107891011

10、Toeplitz矩阵

Toeplitz矩阵与Hankel矩阵类似,也是针对于一个向量C或者两个向量C或R,而生成的一个对称矩阵。

矩阵中各元素满足如下规律:

(1)当只有一个向量C时,T=toeplita(C):

以向量C作为Toeplitz矩阵的第一列:

对角线上的各元素相等;各元素关于主对角线对称。

(2)当有两个向量C或R时,T=toeplitz(C,R)时:

以向量C作为Toeplitz矩阵的第一列;以向量R作为矩阵的最后一行;当C的第一个元素不同于R第一个元素时,取C的第一个元素作为主对角上的元素。

>>c=[5678910];

r=[67891011];

T=toeplitz(c)

T=

5678910

656789

765678

876567

987656

1098765

>>T=toeplitz(c,r)

Warning:

Firstelementofinputcolumndoesnotmatchfirstelementofinputrow.

Columnwinsdiagonalconflict.

(Type"warningoffMATLAB:

toeplitz:

DiagonalConflict"tosuppressthiswarning.)

>InC:

\MATLAB6p5\toolbox\matlab\elmat\toeplitz.matline18

T=

57891011

6578910

765789

876578

987657

1098765

二、矩阵的特征参数运算

1、矩阵的逆运算的充分必要条件是矩阵的行列式不为零。

A=[1000;1200;2130;1214]

A=

1000

1200

2130

1214

>>B=inv(A)

B=

1.0000000

-0.50000.500000

-0.5000-0.16670.33330

0.1250-0.2083-0.08330.2500

2、矩阵的行列式运算

当矩阵为方阵时,可以进行矩阵的行列式运算操作,用det函数操作。

>>x=det(A)%A、B取自上例

x=

24

>>y=det(B)

y=

0.0417

>>i=x*y

i=

1

3、矩阵的特征值运算

(1)用eig和eigs两个函数来进行矩阵的特征值运算。

其格式如下:

E=eig(X)命令生成由矩阵X的特阵值所组成的一个列向量。

(2)[V,D]=eig(X)命令生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素购成的对角矩阵。

(3)eigs(A)命令是由迭代法求解矩阵的特阵值和特征向量。

(4)D=eigs(A)命令生成由矩阵A的特征值组成的一个列向量。

A必须为方阵,最好是大型稀疏矩阵。

(5)[V,D]=eigs(A)命令生成两个矩阵V和D,其中V是以矩阵A的特征向量作为列向量组成的矩阵,D是由矩阵A的特征值作为主对角线与元素构成的对角矩阵

>>x=magic(3)

x=

816

357

492

>>a=[100;003;090]

a=

100

003

090

>>E=eig(x)

E=

15.0000

4.8990

-4.8990

>>[V,D]=eig(x)

V=

-0.5774-0.8131-0.3416

-0.57740.4714-0.4714

-0.57740.34160.8131

 

D=

15.000000

04.89900

00-4.8990

>>D=eigs(a)

D=

-5.1962

5.1962

1.0000

>>[V,D]=eigs(a)

V=

001.0000

0.50000.50000

-0.86600.86600

 

D=

-5.196200

05.19620

001.0000

>>D=eigs(a)

D=

-5.1962

5.1962

1.0000

4、矩阵的范数运算

数值分析与计算方法所得不同之处在于引入了范数的概念,用norm和normest函数来计算矩阵的范数,其格式如下:

(1)norm函数

norm(X)用来计算矩阵X的2-范数

norm(X,2)与norm(X)的功能相同

norm(X,1)用来计算矩阵X的1-范数

norm(X,inf)用来计算矩阵X的无穷范数

norm(X,’fro’)用来计算矩阵X的frobenius范数

(2)normest函数

normest函数只能计算矩阵的2-范数。

且是其2-范数的估计值,适用于计算norm(X)比较费时的情况,其格式为normest(X).

>>X=hilb(4)

X=

1.00000.50000.33330.2500

0.50000.33330.25000.2000

0.33330.25000.20000.1667

0.25000.20000.16670.1429

>>norm(4)

ans=

4

>>norm(X)

ans=

1.5002

>>norm(X,2)

ans=

1.5002

>>norm(X,1)

ans=

2.0833

>>norm(X,inf)

ans=

2.0833

>>norm(X,'fro')

ans=

1.5097

>>normest(X)

ans=

1.5002

5、矩阵的条件数运算

矩阵的条件舒适判断矩阵“病态”程度的一个量值,矩阵A的条件数越大,表明A越“病态”,反之,表明A越“良态”。

(1)cond函数

cond函数用于计算矩阵的条件数,cond(X)返回关于矩阵X的2-范数的条件数。

cond(X,P)关于矩阵X的P-范数的条件数(P为1、2、inf或fro)。

(2)rcon函数

rcond函数用于计算矩阵条件数的倒数值,所以当矩阵X病态时,rcond(X)就接近0;X“良态”时,rcond(X)就接近1。

(3)condest

condest(X)用于计算关于矩阵X的1-范数的条件数的估计值。

>>M=magic(3);

>>H=hilb(4);

>>c1=cond(M)

c1=

4.3301

>>c2=cond(M,1)

c2=

5.3333

>>c3=rcond(M)

c3=

0.1875

>>c4=condest(M)

c4=

5.3333

>>h1=cond(H)

h1=

1.5514e+004

>>h2=cond(H,inf)

h2=

2.8375e+004

>>h3=rcond(H)

h3=

3.5242e-005

>>h4=condest(H)

h4=

2.8375e+004

6、特征值的条件数运算

通过函数condeig进行特征值条件数的计算。

函数使用方式为condeig(A)或者[V,D,S]=condeig(A),其中condeig(A)表示有矩阵的各特阵值条件数所构成的列向量;[V,D,S]=condeig(A)等价于上面介绍[V,D]=eig(A)和S=condeig(A)。

V表示特征向量组成的矩阵,D表示特征值组成的对角阵,S表示对应的特征值条件数。

>>V=[11110E10]

V=

1.0e+011*

0.00000.00000.00001.0000

>>A=diag(V)

A=

1.0e+011*

0.0000000

00.000000

000.00000

0001.0000

>>Jt=cond(A)%矩阵的条件数计算

Jt=

1.0000e+011

>>Tt=condeig(A)%矩阵特征值的条件数计算

Tt=

1

1

1

1

>>M=magic(7)

M=

3039481101928

384779182729

466817263537

5141625343645

1315243342444

2123324143312

2231404921120

>>Jt=cond(M)%矩阵的条件数计算

Jt=

7.1113

>>Tt=condeig(M)%矩阵特征值的条件数计算

Tt=

1.0000

1.0048

1.3171

1.3125

1.0048

1.3125

1.3171

7、矩阵的秩

用rank来求得矩阵的秩

>>T=rand(6)

T=

0.95010.45650.92180.41030.13890.0153

0.23110.01850.73820.89360.20280.7468

0.60680.82140.17630.05790.19870.4451

0.48600.44470.40570.35290.60380.9318

0.89130.61540.93550.81320.27220.4660

0.76210.79190.91690.00990.19880.4186

>>r=rank(T)

r=

6

>>T1=[111;223]

T1=

111

223

>>r=rank(T1)

r=

2

8、矩阵的迹

矩阵的迹是指矩阵主对角线上所有元素的和,也是矩阵的特征值。

用trace函数求得。

>>T=trace(M)

T=

65

>>T1=eig(M)

T1=

65.0000

-21.2768

-13.1263

21.2768

13.1263

>>T2=65-21-13+21+13

T2=

65

9、矩阵的伪逆

在MATLAB中,矩阵的伪逆运算可以有函数pinv实现。

完整的应用形式为X=pinv(A),矩阵X和矩阵A同维数,并且矩阵A和矩阵X满足条件A*X*A=A、X*A*X=X和A*X=X*A=I(在一定的误差条件下近似成立)

>>A=magic(4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1