matlab教学2014第2章矩阵及其操作_第1页
matlab教学2014第2章矩阵及其操作_第2页
matlab教学2014第2章矩阵及其操作_第3页
matlab教学2014第2章矩阵及其操作_第4页
matlab教学2014第2章矩阵及其操作_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

魔方矩阵(Dürer’s

matrix)第2章矩阵及其操作第2章矩阵及其操作2.1数据类型2.2变量及其操作2.3矩阵基础2.4矩阵运算2.5矩阵的基本操作2.6矩阵分析2.7矩阵分解2.8矩阵相似变换2.9常用函数2.1数据类型MATLAB有15种基本数据类型,每种基本数据类型均以数组/矩阵的形式出现。1.数值类型2.逻辑类型3.字符和字符串类型4.结构体类型1.数值类型(1)整数(2)浮点数(3)复数(4)Inf(5)NaN(1)整数类型MATLAB支持1、2、4和8字节的有符号整数和无符号整数。(2)浮点数类型MATLAB有单精度和双精度两种浮点数。(3)复数类型复数包含实部和虚部,用i或者j表示虚部。生成复数有两种方法:>>z=3+4iz=3.0000

+

4.0000i>>complex(3,4)ans

=3.0000

+

4.0000i>>

help

complex(4)Inf和NaNInf和-Inf分别表示正无穷大和负无穷。NaN(Not

a

Number)表示一个既不是实数也不是复数的值。2.逻辑类型在MATLAB中逻辑类型包含true和false,分别由1和0表示。函数logical将任何非零的数值转换为true(即1),将数值0转换为false(即0)。3.字符和字符串类型在MATLAB中,数据类型(char)表示一个字符;一个char类型的1·n数组称为字符串string。4.结构体类型结构体类型是一种由若干属性(field)组成的MATLAB数组,其中的每个属性可以是任意数据类型。结构体数组的创建及操作将在第4章里面进行详细的介绍。2.2变量及其操作变量变量名以字母开头,后接字母、数字或下划线的字符序列;变量名区分字母的大小写。赋值变量=表达式>>

num_students

=

25num_students

=25>>x=1+2i, y=3-sqrt(17),z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))x

=1.0000

+2.0000iy=-1.1231z=-0.3488

+

0.3286i特殊变量(预定义变量)在MATLAB工作空间中,还驻留几个由系统本身定义的变量。预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。内存变量的管理利用MATLAB工作空间窗口可实现对内存变量的查看、修改、保存、删除、导出及画图等操作。利用clear命令可删除工作空间中的变量。利用who和whos命令可分别用于显示在工作空间中已经驻留的变量名清单。who命令只显示出驻留变量的名称whos在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等详细信息。内存变量的保存与载入mat文件利用mat文件可以把当前工作空间中的一些有用变量长久地保留下来,扩展名是.mat。mat文件的生成和装入分别由save和load命令来完成。save文件名变量名表load文件名变量名表>>

savedata

x

y

z>>

clear>>

load

data

z对load和save命令的一点说明save文件名变量名表load文件名变量名表文件名可以带路径,但不需带扩展名.mat,命令隐含一定对.mat文件进行操作。变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分隔。当变量名表省略时,保存或装入全部变量。更多内容,请>>

help

save>>

help

load在MATLAB中,所有的数据均以二维、三维或高维矩阵的形式存储,每个矩阵的单元可以是数值类型、逻辑类型、字符类型或者其他任何数据类型。对于标量,可以用1·1矩阵来表示;对于一组n个数据,可以用1·n矩阵来表示;对于多维数组,可以用多维矩阵来表示。2.3矩阵基础1.矩阵的索引A(i,j)—第i行、第j列的元素A(i,:)—第i行的全部元素A(:,j)—第j列全部元素A(i:i+m,:)—第i~i+m行的全部元素A(:,k:k+m)—第k~k+m列的全部元素A(i:i+m,k:k+m)—第i~i+m行内,并在第k~k+m列中的所有元素还可利用一般向量和end运算符来表示矩阵下标,

end表示某一维的末尾元素下标。2.3矩阵基础2.矩阵的创建在命令窗口直接输入矩阵的各个元素>>

A=[16

3

2

13;5

10

11

8;9

6

7

12;4

15

14

1]A=16321351011896712415141通过load命令载入数据文件>>

load

mymatrix.txt>>

mymatrixmymatrix

=16321351011896712415141Matlab内在函数(特殊矩阵)利用m文件创建特殊矩阵生成函数特殊矩阵生成函数特殊矩阵生成函数>>B=magic(4)B

=16231351110897612414151>>A=B(:,[1

3

2

4])A

=16321351011896712415141A=16321351011894615714121利用冒号表达式产生行向量,调用格式:e1:e2:e3>>

1:10ans

=1

2

3

4

5

6

7

8

9

10>>

100:-7:50ans

=100

93

86

79

72

65

58

51用linspace函数产生行向量,调用格式:linspace(a,b,n)>>

linspace(0,100,6)ans

=0

20

40

60

80

100用logspace函数产生行向量,调用格式:logspace(a,b,n)>>

logspace(-2,2,6)ans

=0.0100

0.0631

0.3981

2.5119

15.8489

100.0000向量的创建3.矩阵的合并把两个或者两个以上的矩阵连接成一个新矩阵。矩阵构造符[]可用于构造矩阵,并可以作为一个矩阵合并操作符。C=[A

B]在水平方向合并矩阵A和B;C=[A;B]在竖直方向合并矩阵A和B。具有相同行数的两个矩阵,合并为一个新矩阵不具有相同行数的两个矩阵,不允许合并为一个新矩阵3.矩阵的合并矩阵合并函数3.矩阵的合并3.矩阵的合并>>

A=[16

3

2

13;5

10

11

8;9

6

7

12;4

15

14

1]>>B=[AA+32;A+48A+16]B

=16594310615211714138121483741363542384734

4543

4039

4446

3364

51

50

61

32

19

18

2953

58

59

56

21

26

27

2457

54

55

60

25

22

23

2852

63

62

49

20

31

30

17A=163213510118967124151414.矩阵的扩展A=16321351011896712415141>>

B=A;B(4,5)=17B

=1632130510118096712041514117>>

A(end+1,:)=18A

=163213051011809671204151411718181818185.删除矩阵的行、列>>

A(end,:)=[]A

=16

3

2

13

05

10

11

8

09

6

7

12

04

15

14

1

17>>

A(:,end)=[]A

=16

3

2

135

10

11

89

6

7

124

15

14

1A

=16

3

2

13

05

10

11

8

09

6

7

12

04

15

14

1

1718

18

18

18

186.改变矩阵结构7.基于列的操作规则在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依此类推。阵列中的每列数据代表一个变量,每一行代表一个观察者,第(i,j)个要素是第i个观察者的第j个变量。对5个人的3个身体指标数据进行记录Data

=

[

72134328120135691567182148247517012];7.基于列的操作规则例子>>

A=[16

3

2

13;5

10

11

8;9

6

7

12;4

15

14

1]A

=16321351011896712415141>>

a3=A(3),a5=A(5)a3

=9a5

=3序号(Index)与下标(Subscript)一一对应,以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换关系可利用sub2ind和ind2sub函数求得。>>

sum(Data)ans

=3790

8090

174>>

mean(Data)ans

=758

1618

34800>>

max(Data)ans

=820

2010

71Data

=

[

72134328120135691567182148247517012

];7.基于列的操作规则基于列操作规则的函数maxminmeanmedianstdvarsortsortrowssumprod

histhistctrapzcumsum最大值最小值-平均值-中值-标准差方差升序排列-按行的升序排列-求和-求积-直方图-直方图计数-梯形数值积分-元素的累积求和cumprodcumtrapz-元素的累积求积-累计梯形数值积分基本操作有限差分

diff gradient del2-微分和导数-梯度-离散拉普拉斯算子相关性分析corrcoef-相关系数

cov-协方差矩阵subspace-子空间的夹角滤波和卷积filterfilter2convconv2convndeconvdetrend-一维数字滤波器-二维数字滤波器-卷积和多项式乘法-二维卷积-N维卷积-反卷积和多项式除法运算-去除线性趋势基于列操作规则的函数傅里叶变换fftfft2fftnifftifft2ifftnfftshiftifftshift-离散傅里叶变换-二维离散傅立叶变换N维离散傅里叶变换-逆离散傅立叶变换-二维逆离散傅立叶变换N维离散傅里叶逆变换-移零频率分量的频谱中心-逆FFTSHIFT8.矩阵的下标引用通过矩阵下标来存取矩阵元素。1)访问单个元素2)线性引用元素3)访问多个元素1)访问单个元素A=16321351011896712415141A(i,j)i——行号;j——列号。>>

A(1,4)

+

A(2,4)

+

A(3,4)

+

A(4,4)ans

=342.线性引用元素对于矩阵A,线性引用元素的格式为A(k)。通常这样的引用用于行向量或列向量,但也可用于二维矩阵。MATLAB按列优先排列的一个长列向量格式(线性引用元素)来存储矩阵元素。A=16321351011896712415141>>

A(6)ans

=103.访问多个元素操作符“:”可用来获取矩阵的多个元素。若A是二维矩阵,其主要用法如下:A(:,:)矩阵A的所有元素A(i,:)矩阵A第i行的所有元素A(i,k1:k2)矩阵A第i行的自k1到k2列的所有元素A(:,j)矩阵A第j列的所有元素A(k1:k2,j)返回矩阵A第j列的自k1到k2行的所有元素A=163213>>

A(3,:)510118ans

=96712???4151419.逻辑下标x

=[2.1

1.7

1.6

1.5

NaN1.9

1.8

1.5

5.11.8

1.4

2.2

1.6

1.8];>>

index=isfinite(x)index

=1

1

1

1

0

1

1

1

1

1

1

1

1>>x(index)ans

=2.1

1.7

1.6

1.5

1.9 1.81.5

5.1

1.8

1.4

2.2

1.6

1.8>>

x

=x(isfinite(x))x

=2.1

1.7

1.6

1.5

1.9

1.8

1.5

5.1

1.8

1.4

2.2

1.6

1.8>>

x

=

x(abs(x-mean(x))

<=3*std(x))x

=2.1

1.7

1.6

1.5

1.9

1.8

1.5

1.8

1.4

2.2

1.6

1.8删除离群点删除异常点例——画数据抽稀prewelltest5find函数寻找满足特定逻辑条件的数组元素的索引>>

k

=

find(isprime(A))'k

=2

5

9

10

11

13>>

A(k)ans

=5

3

2

11

7

13>>

A(k)

=

NaNA

=16

NaN

NaN

NaNNaN

10

NaN

89

6

NaN

124

15

14

1A=16

3

2

135

10

11

89

6

7

124

15

14

110.

矩阵信息的获取1)矩阵的尺寸2)元素的数据类型3)矩阵的数据结构1)矩阵的尺寸矩阵尺寸函数可以得到矩阵的形状和大小信息。2)元素的数据类型查询元素数据类型信息。3)矩阵元素的数据结构判断矩阵是否为某种指定数据结构例——不定长度矩阵lengthsize11.稀疏矩阵1)稀疏矩阵的创建2)稀疏矩阵的查看3)稀疏矩阵的运算规则若一个矩阵只有少数的元素非零,称为稀疏矩阵。稀疏矩阵用非零元素及其对应的下标来表示。用户可以创建双精度、复数和逻辑等类型的稀疏矩阵。11.稀疏矩阵1)稀疏矩阵的创建函数sparse可用于创建稀疏矩阵S

=

sparse(i,j,s,m,n)i,j

——稀疏矩阵非零元素的行和列下标

s

——相应的非零元素的值

m,n——是矩阵的行数和列数函数sparse从满矩阵转化为稀疏矩阵;函数full从稀疏矩阵转化为满矩阵。例——油藏数值模拟求解其它用于创建特殊稀疏矩阵的函数2)稀疏矩阵的查看MATLAB提供一些函数用于查看稀疏矩阵的信息,如下表所示。MATLAB自带一个的稀疏矩阵west0479。2)稀疏矩阵的查看例——差分格式正确性检验3)稀疏矩阵的运算规则绝大多数适用于满阵的各种命令和函数都可以用于稀疏矩阵的运算,并且遵循如下约定:把矩阵变为标量或者定长向量的函数总是给出满矩阵;对于标量或者定长向量变换到矩阵的函数,如函数zeros、ones、eye、rand等总是给出满矩阵;从矩阵到矩阵的变换函数将以原矩阵的形式出现;在参与矩阵扩展的子矩阵(如[

A

B;C D])中,只要有一个是稀疏矩阵,那么所得的结果也是稀疏矩阵;在矩阵引用中,将仍以原矩阵形式给出结果。第2章矩阵及其操作2.1数据类型2.2变量及其操作2.3矩阵基础2.4矩阵运算2.5矩阵的基本操作2.6矩阵分析2.7矩阵分解2.8矩阵相似变换2.9常用函数2.4矩阵运算矩阵的运算包括算术运算、点运算、关系运算、逻辑运算。1.算术运算基本算术运算:+—*/\^(加)(减)(乘)(右除)(左除)(乘方)2.4矩阵运算矩阵的运算包括算术运算、点运算、关系运算、逻辑运算。1.算术运算基本算术运算:+—*/\^(加)(减)(乘)(右除)(左除)(乘方)加减法运算语法:A+B语法:A-B>>

A+A'ans

=32811178201723111714261723262>>

A-A'ans

=0-2-79205-77-50-2-9720注意:矩阵A和B矩阵的维数须相同。语法:A*B>>

A*A'ans

=438236332150236310278332332278310236150332236438注意:矩阵A和B矩阵的维数有要求,两矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则A*B为m×p矩阵。矩阵乘法矩阵除法在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。对于含有标量的运算,两种除法运算的结果相同,如

3/4和4\3有相同的值,都等于0.75。又如:若

a=[10.5,25],则a/5=5\a=[2.1

5]。如果A矩阵是非奇异方阵,则A\b和b/A运算可以实现。A\b等效于A的逆左乘b矩阵,也就是A-1*b,而b/A等效于A矩阵的逆右乘b矩阵,也就是b*A-1。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般A\b≠b/A。矩阵与标量的运算>>

B

=

A

-

8.5B

=7.5-5.5-6.54.5-3.51.52.5-0.50.5-2.5-1.53.5-4.56.55.5-7.5>>

C=A*2C

=3264261020221618121424830282A=16

3

2

135

10

11

89

6

7

124

15

14

1矩阵的乘方语法:A^n>>

A*Aans=341285261269261301309285285309301261269261285341>>

A^2ans=341285261269261301309285285309301261269261285341要求:A为方阵,n为标量,不一定为整数。2.点运算在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*

./.\.^两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。>>

A*A>>

A.*Aans

=ans

=34128526126925694642613013092858136491285309301261269261285341点乘A=16321351011896712415141点乘方>>

pows

=

[n

n.^2

2.^n]pows

=0

0

11

1

22

4

43

9

84

16

165

25

326

36

647

49

1288

64

2569

81

512>>

n

=(0:9)'n

=0123456789例——井底压力求解3.关系运算MATLAB提供了6种关系运算符:<

(小于)<=

(小于或等于)>

(大于)>=

(大于或等于)==

(等于)~=

(不等于)3.关系运算关系运算符的运算法则:当两个标量进行比较时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。当两个维数相同的矩阵进行比较时,对两矩阵相

同位置的元素按标量关系运算规则逐个进行比较,最终的关系运算结果是一个维数与所比较的矩阵

维数相同的由0或1组成矩阵。当一个矩阵和一个标量进行比较时,则对矩阵的每一个元素与标量按标量关系运算规则逐个进行比较,最终的关系运算的结果是一个维数与矩阵相同的由0或1组成矩阵。例——油藏数值模拟求解4.逻辑运算MATLAB提供了3种逻辑运算符:&(与)and|(或)or~(非)not(异或)xor逻辑运算的运算法则:非零元素为真,用1表示,零元素为假,用0表示。设参与逻辑运算的是两个标量a和b,那么:a&b

a,b都为非零时,运算结果为1,否则为0。a|b

a,b中只要有一个非零,运算结果为1。~a

当a是零时,运算结果为1;当a非零时,运算结果为0。xor(a,b)当a和b有1个零,一个非零是,运算结果为1;否则,为零。4.逻辑运算4.逻辑运算若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。若参与逻辑运算的一个是标量,一个是矩阵,那么运算

将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或

0组成。逻辑非是单目运算符,也服从矩阵运算规则。在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。例——油藏数值模拟求解5.运算优先级运算符的优先级决定表达式求值顺序;具有相同优先级的运算符从左到右依次进行运算;不同优先级的运算符采用先进行优先高的运算。运算符的优先等级表括号的优先级最高,因此可以用它来改变默认的优先级。2.5矩阵的基本操作矩阵的求和>>

sum(A)ans=34

34

34

34矩阵的转置>>

A'ans=16

5

9

43

10

6

152

11

7

1413

8

12

1A=16

3

2

135

10

11

89

6

7

124

15

14

12.5矩阵的基本操作A=16

3

2

135

10

11

89

6

7

124

15

14

1矩阵的行列式>>

det(A)ans

=0矩阵的特征值>>

eig(A)ans

=3408000-80命令窗口输入和输出控制格式函数format控制数值的显示格式。x

=

[4/3

1.2345e-6];>>

format

short;xx

=1.3333

0.0000format

short

e;xx

=1.3333e+0001.2345e-006>>

format

short

g;xx

=1.3333 1.2345e-006>>

format

long;xx

=1.33333333333333

0.00000123450000其它支持的格式:>>

help

format2.6矩阵分析1.向量间的距离2.矩阵的秩3.矩阵的行列式4.矩阵的迹5.矩阵的化零矩阵6.矩阵的正交空间7.矩阵的简化梯形形式8.矩阵空间之间的角度部分矩阵分析函数1.向量间的距离2.矩阵的秩矩阵A中线性无关的列向量个数称为列秩,线性无关的行向量个数称为行秩。可以证明列秩与行秩是相等的。3.矩阵的行列式4.矩阵的迹矩阵的迹定义为矩阵对角元素之和。5.矩阵的化零矩阵对于非满秩矩阵A

,若存在矩阵Z

使得

AZ

=0且ZTZ

=I,则称矩阵Z为矩阵A的化零矩阵。在MATLAB中用函数null()来计算矩阵的化零矩阵。6.矩阵的正交空间矩阵A的正交空间Q满足QTQ

=I,且矩阵

Q与A具有相同的列基底。7.矩阵的简化梯形形式r阶单位矩阵。矩阵A的简化梯形形式为

Ir*

,其中I

为r

0*8.矩阵空间之间的角度矩阵空间之间的角度代表具有相同行数的两个矩阵线性相关程度,夹角越小代表线性相关度越高。2.7矩阵分解矩阵分解是把一个矩阵分解成比较简单或者对它性质比较熟悉的若干矩阵的乘积的形式。1.Cholesky分解

2.LU分解3.QR分解4.奇异值分解

5.Schur分解矩阵分解函数表1.Cholesky分解Cholesky分解是把对称正定矩阵A表示为上三角矩阵R的转置与其本身的乘积,即A

=RTR。1.Cholesky分解对于稀疏矩阵,MATLAB中用函数

cholinc()计算不完全Cholesky分解R

=full(cholinc(sparse(X),DROPTOL)),其中DROPTOL为不完全Cholesky分解的丢失容限;

R

=full(cholinc(sparse(X),‘0’)),完全Cholesky分解。2.LU分解高斯消去法又称LU分解:将任意一个方阵A分解为一个交换下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。LU分解在MATLAB中用函数lu()来实现[L,U]

=

lu(X),X为一个方阵,L为交换

下三角矩阵,U为上三角矩阵;[L,U,P]=lu(X),X为一个方阵,L为下三角矩阵,U为上三角矩阵,P为置换矩阵,满足关系P*X=L*U或X=P-1

*L*U。2.LU分解对于稀疏矩阵

[L

U]=luinc(X,DROPTOL),其中X、L和U

的含义与函数lu()中的变量相同,DROPTOL为不完全LU分解的丢失容限。当DROPTOL设为0时,退化为完全LU分解。[L,U]=luinc(X,‘0’),0级不完全LU分解。[L,U,P]=luinc(X,'0'),0级不完全LU分解。3.QR分解QR分解就是将m×n的矩阵A分解为m×n的矩阵Q和n×n的上三角矩阵R的乘积,且Q‘*Q=I,即A=Q*R。QR分解是由函数qr()来实现:[Q,R]=qr(A) 满足A=Q*R。R

=qr(A), 返回上三角矩阵R。4.奇异值分解奇异值分解就是将m·n

的矩阵A

分解为

A=U*S*V’,其中U为m·m的酉矩阵,V为n·n的酉矩阵,S为m·n的矩阵,并可如下表示:0

S

=

L

0 0

,其中L

=diag

(l1

,l2

,,lr,r

=

rank(

A)

,li

>

0(i

=

1,

2,,

r)奇异值分解由函数svd()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论