Matlab基础及其应用教程笔记第二章.docx

上传人:b****8 文档编号:9349881 上传时间:2023-05-18 格式:DOCX 页数:27 大小:433.48KB
下载 相关 举报
Matlab基础及其应用教程笔记第二章.docx_第1页
第1页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第2页
第2页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第3页
第3页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第4页
第4页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第5页
第5页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第6页
第6页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第7页
第7页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第8页
第8页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第9页
第9页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第10页
第10页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第11页
第11页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第12页
第12页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第13页
第13页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第14页
第14页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第15页
第15页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第16页
第16页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第17页
第17页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第18页
第18页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第19页
第19页 / 共27页
Matlab基础及其应用教程笔记第二章.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Matlab基础及其应用教程笔记第二章.docx

《Matlab基础及其应用教程笔记第二章.docx》由会员分享,可在线阅读,更多相关《Matlab基础及其应用教程笔记第二章.docx(27页珍藏版)》请在冰点文库上搜索。

Matlab基础及其应用教程笔记第二章.docx

Matlab基础及其应用教程笔记第二章

 

第二章

2.1.5运算符

矩阵算术运算符

运算符

运算符

示例

法则或使用说明

+

C=A+B

矩阵加法法则,即C(i.j)=A(i,j)+B(i.j)

-

C=A-B

矩阵减法法则,即C(i.j)=A(i,j)-B(i.j)

*

C=A*B

矩阵乘法法则

/

右除

C=A/B

定义为线性方程组X*B=a的解,即C=A/B=A*B-1

\

左除

C=A\B

定义为线性方程组A*X=B的解,即C=A\B=A-1*B

^

乘幂

C=A^B

A、B其中一个为标量时有定义

'

共轭转置

B=A'

B是A的共轭转置矩阵

数组算术运算符

运算符

名称

示例

法则或使用说明

.*

数组乘

C=A.*B

C(i.j)=A(i,j)*(i,j)

./

数组右除

C=A./B

C(i,j)=A(i,j)/(i,j)

.\

数组左除

C=A.\B

C(i,j)=B(i,j)A(i,j)

.^

数组乘幂

C=A.^B

C(i,j)=A(i,j)^B(i,j)

.'

转置

A.'

将数组的行摆放成列,复数元数不能共轭

 

关系运算符

运算符

名称

示例

法则或使用说明

<

小于

A

A、B都是标量,结果是或为1(真)或0(假)的标量

A、B若为一个标量,另一个为数组,标量与数组各元数逐一比较,结果为与运算数组行列相同的数组,其中各元数取值或1或0

A、B均为数组时,必须行、列数分别相同,A与B各对应元素相比较,结果为与A或B行列相同的数组,其中各元素取值或1或0

==和~=运算对参与比较的量同时比较实部和虚部,其他运算只比较实部

<=

小于等于

A<=B

>

大于

A>B

>=

大于等于

A>=B

==

恒等于

A==B

~=

不等于

A~=B

 

2.2.1向量的生成

生成向量主要有3种方案:

直接输入法、冒号表达式法和函数法

1.直接输入法

在命令提示符之后直接输入一个向量,其格式是:

向量名=[a1,a2,a3,…]

例:

>>A=[2,3,4,5,6],B=[1;2;3;4;5],C=[456789];%最后一个分号表示执行后不显示C

2.冒号表达式法

利用冒号表达式a1:

step:

an也能生成向量,式中a1为向量的第一个

一个元素的限定值,step是变化步长,省略步长时系统默认为1。

例:

>>A=1:

2:

10,B=1:

10,C=10:

-1:

1,D=10:

2:

4,E=2:

-1:

10

其运行结果为

A=

13579

B=

12345678910

C=

10987654321

D=

Emptymatrix:

1-by-0

E=

Emptymatrix:

1-by-0

 

3.函数法

有两个函数可用来直接生成向量。

一个实现线性等分——linspace();另一个实现对数等分——logspace()。

线性等分的通用格式为A=linspace(a1,an,n),其中a1是向量的首元素,an是向量的尾元素,n把a1至an之间的区间分成向量的首尾之外的其他n-2个元素。

省略n则默认生成100个元素的向量。

例:

>>A=linspace(1,50),B=linspace(1,30,10)

对数等分的通用格式为A=logspace(a1,an,n),其中a1是向量首元素的幂,即A

(1)=10a1;an是向量尾元素的幂,即A(n)=10an。

n是向量的维数。

省略n则默认生成50个元素的对数等分向量。

>>A=logspace(0,49),B=logspace(0,4,5)

尽管用冒号表达式和线性等分函数都能生成线性等分向量,但在使用时有几点区别值得注意:

(1)an在冒号表达式中,它不一定恰好是向量的最后一个元素,只有当向量的倒数第二个元素加步长等于an时,an才正好构成尾元素。

如果一定要构成一个以an为末尾元素的向量,那么最可靠的生成方法是用线性等分函数。

(2)在使用线性等分函数前,必须先确定生成向量的元素个数,但使用冒号表达式将依着步长和an的限制去生成向量,用不着去考虑元素个数的多少。

(3)实际应用时,同时限定尾元素和步长去生成向量,有时可能会出现矛盾,此时必须做出取舍。

要么坚持步长优先,调整尾元素限制;要么坚持尾元素限制,去修改等分

步长。

向量的加、减和数乘运算

例:

>>A=[12345];B=3:

7;C=linspace(2,4,3);AT=A';BT=B';

>>E1=A+B,E2=A-B,F=AT-BT,G1=3*A,G2=B/3,H=A+C

其运行结果为

E1=

4681012

E2=

-2-2-2-2-2

F=

-2

-2

-2

-2

-2

G1=

3691215

G2=

1.00001.33331.66672.00002.3333

?

?

?

Errorusing==>+

Matrixdimensionsmustagree.

上述实例执行后,H=A+C显示了出错信息,表明维数不同的向量之间的加减法运算是非法的。

2.2.3向量的点、叉积运算

向量的点积即数量积,叉积又称向量积或矢量积。

1.点积运算

点积运算(A·B)的定义是参与运算的两向量各对应位置上元素相乘后,再将各乘积相加。

所以向量点积的结果是一标量而非向量。

点积运算函数是:

dot(A,B),A、B是维数相同的两向量。

>>A=1:

10;B=linspace(1,10,10);AT=A';BT=B';

>>e=dot(A,B),f=dot(AT,BT)

 

2.叉积运算

在数学描述中,向量A、B的叉积是一新向量C,C的方向垂直于A与B所决定的平面

A=Axi+Ayj+Azk

B=Bxi+Byj+Bzk

C=A×B=(AyBz-AzBy)i+AzBx-AxBz)j+(AxBy-AyBx)k

叉积运算的函数是:

cross(A,B),该函数计算的是A、B叉积后各分量的元素值,且A、B只能是三维向量。

例:

>>A=1:

3,B=3:

5

>>E=cross(A,B)

3.混合积运算

综合运用上述两个函数就可实现点积和叉积的混合运算,该运算也只能发生在三维向量之间

2.3矩阵运算

2.3.2矩阵元素的表示及相关操作

1.元素的下标表示法

(1)全下标方式:

用行下标和列下标来标示矩阵中的一个元素,这是一个被普遍接受和采用的方法。

对一个m×n阶的矩阵A,其第i行、第j列的元素用全下标方式就表示成A(i,j)。

(2)单下标方式:

将矩阵元素按存储次序的先后用单个数码顺序地连续编号。

仍以m×n阶的矩阵A为例,全下标元素A(i,j)对应的单下标表示便是A(s),其中s=(j-1)×m+i。

例:

元素的下标表示

>>A=[123;654;879]

A=

123

654

879

>>A(2,3),A(6)%显示矩阵中全下标元素A(2,3)和单下标元素A(6)的值

ans=

4

ans=

7

>>A(1:

2,3)%显示矩阵A第1、2两行的第3列的元素值

ans=

3

4

>>A(6:

8)%显示矩阵A单下标第6~8号元素的值,此处是用一向量表示一下标区间

ans=

734

2.矩阵元素的赋值

(1)全下标方式:

在给矩阵的单个或多个元素赋值时,采用全下标方式接收。

(2)单下标方式:

在给矩阵的单个或多个元素赋值时,采用单下标方式接收。

(3)全元素方式:

将矩阵B的所有元素全部赋值给矩阵A,即A(:

)=B,不要求A、B同阶,只要求元素个数相等。

例:

1----全下标接收元素赋值

>>clear%不要因工作空间中已有内容干扰了后面的运算

>>A(1:

2,1:

3)=[111;111]%可用一矩阵给矩阵A的1~2行1~3列的全部元素赋值为1

A=

111

111

>>A(3,3)=2%给原矩阵中并不存在的元素下标赋值会扩充矩阵阶数,注%意补0的原则

A=

111

111

002

2----单下标接收元素赋值

>>A(3:

6)=[-111-1]%可用一向量给单下标表示的连续多个矩阵元素赋值

A=

111

111

-1-12

>>A(3)=0;A(6)=0%用单下标对单一元素赋值

A=

111

111

002

3----全元素方式赋值

>>A(:

)=1:

9%将一向量按列之先后赋值给矩阵A,A在上例已被引用

A=

147

258

369

>>A(3,4)=16,B=[111213;141516;171819;000]%扩充矩阵A,生成4×3阶矩阵B

A=

1470

2580

36916

B=

111213

141516

171819

000

>>A(:

)=B%将4×3阶矩阵B按列全部赋给3×4阶矩阵A

A=

1101816

1412019

1715130

3.矩阵元素的删除

在MATLAB中,可以用空矩阵(用[]表示)将矩阵中的单个元素、某行、某列、某矩阵子块及整个矩阵中的元素删除。

例:

>>clear

>>A(2:

3,2:

3)=[11;22]%生成一新矩阵A

A=

000

011

022

>>A(2,:

)=[]%删除A矩阵的第2行,“:

”可表示所有行或列

A=

000

022

>>A(1:

2)=[]%删除新矩阵A的前两个单下标元素,矩阵变成向量

A=

0202

>>A=[]%删除所有元素

A=

[]

2.3.3矩阵的创建

(1)矩阵的所有元素必须放在方括号([])内;

(2)每行的元素之间需用逗号或空格隔开;

(3)矩阵的行与行之间用分号或回车符分隔;

(4)元素可以是数值或表达式。

1.直接输入法:

在命令行提示符“>>”后,直接输入一矩阵的方法即是直接输入法。

2.抽取法:

抽取法是从大矩阵中抽取出需要的小矩阵(或子矩阵)。

1)用全下标方式

>>clear

>>A=[1234;5678;9101112;13141516]

A=

1234

5678

9101112

13141516

>>B=A(1:

3,2:

3)%取矩阵A行数为1~3,列数为2~3的元素构成子矩B

B=

23

67

1011

>>C=A([13],[24])%取矩阵A行数为1、3,列数为2、4的元素构成子矩阵C

C=

24

1012

>>D=A(4,:

)%取矩阵A第4行,所有列,“:

”可表示所有行或列

D=

13141516

>>E=A([24],end)%取2、4行,最后列,用“end”表示某一维数中的最大值

E=

8

16

 

2)用单下标方式

>>clear

>>A=[1234;5678;9101112;13141516]

A=

1234

5678

9101112

13141516

>>B=A([4:

6;357;12:

14])

B=

1326

9210

1548%从矩阵A中取出单下标4~6的元素做第1行,单下标3、5、7这3个元素做第2行,单下标12~14的元素做第3行,生成一3×3阶新矩阵B

 

3.拼接法行数与行数相同的小矩阵可在列方向扩展拼接成更大的矩阵

>>A=[123;456;789],B=[98;76;54],C=[456;789]

A=

123

456

789

B=

98

76

54

C=

456

789

>>E=[AB;BA]%行列两个方向同时拼接,请留意行、列数的匹配问题

E=

12398

45676

78954

98123

76456

54789

>>F=[A;C]%A、C列数相同,沿行向扩展拼接

123

456

789

456

789

 

4.函数法

常用工具矩阵生成函数

函数

功能

zeros(m,n)

生成m×n阶的全0矩阵

ones(m,n)

生成m×n阶的全1矩阵

rand(m,n)

生成取值在0~1之间满足均匀分布的随机矩阵

randn(m,n)

生成满足正态分布的随机矩阵

eye(m,n)

生成m×n阶的单位矩阵

 

特殊矩阵生成函数

函数

功能

函数

功能

compan

Companion矩阵

magic

魔方矩阵

gallery

Higham测试矩阵

pascal

帕斯卡矩阵

hadamard

Hadamard矩阵

rosser

经典对称特征值测试矩阵

hankel

Hankel矩阵

toeplitz

Toeplitz矩阵

hilb

Hilbert矩阵

vander

范德蒙矩阵

invhilb

反Hilbert矩阵

wilkinson

Wilkinson's特征值测试矩阵

 

例:

用函数生成矩阵

>>A=ones(3,4),B=eye(3,4),C=magic(3)

A=

1111

1111

1111

B=

1000

0100

0010

C=

816

357

492

>>formatrat;D=hilb(3),E=pascal(4)%rat的数值显示格式可将小数用分数表示

D=

11/21/3

1/21/31/4

1/31/41/5

E=

1111

1234

13610

141020

n阶魔方矩阵的特点是每行、每列和两对角线上的元素之和各等于(n

3+n)/2。

例如上例中3阶魔方阵每行、每列和两对角线元素和为15。

希尔伯特矩阵的元素在行、列方向和对角线上的分布规律是显而易见的,而帕斯卡矩阵在其副对角线及其平行线上的变化规律实际上就是中国人称为杨辉三角而西方人称帕斯卡三角的变化规律。

5.拼接函数和变形函数法

拼接函数法是指用cat和repmat函数将多个或单个小矩阵或沿行、或沿列方向拼接成一个大矩阵。

cat函数的使用格式是:

cat(n,A1,A2,A3,…),n=1时,表示沿行方向拼接;n=2,表示沿列方向拼接。

n可以是大于2的数字,此时拼接出的是多维数组,2.4.2节将会加以讨论。

repmat函数的使用格式是:

repmat(A,m,n…),m和n分别是沿行和列方向重复拼接矩阵A的次数。

例:

>>A1=[123;987;456],A2=A1.'

A1=

123

987

456

A2=

194

285

376

>>cat(1,A1,A2,A1)%沿行向拼接

ans=

123

987

456

194

285

376

123

987

456

>>cat(2,A1,A2)%沿列向拼接

ans=

123194

987285

456376

>>repmat(A1,2,2)

ans=

123123

987987

456456

123123

987987

456456

>>repmat(A1,2,1)

ans=

123

987

456

123

987

456

>>repmat(A1,1,3)

ans=

123123123

987987987

456456456

变形函数法主要是把一向量通过变形函数reshape变换成矩阵,当然也可将一个矩阵变换成一个新的、与之阶数不同的矩阵。

reshape函数的使用格式是:

reshape(A,m,n…),m和n分别是变形后新矩阵的行列数。

例:

>>A=linspace(2,18,9)

A=

24681012141618

>>B=reshape(A,3,3)%注意新矩阵的排列方式,从中体会矩阵元素的存储次序

B=

2814

41016

61218

>>a=20:

2:

24;b=a.';%生成3个元素的列向b,便于将矩阵B扩展成3×4阶的矩阵C

>>C=[Bb],D=reshape(C,4,3)%将3×4阶的矩阵C变形成4×3阶的矩阵D

C=

281420

4101622

6121824

D=

21018

41220

61422

81624

6.加载法

加载用的菜单是命令窗口中的File|ImportData,而命令则是load。

例:

>>clear

>>loadsl2_19%从外存中加载事先保存在可搜索路径中的数据文件sl2_19.mat

>>who%询问加载的矩阵名称,参见1.8节表1.8的命令

Yourvariablesare:

A

>>A%显示加载的矩阵内容

A=

4567

1234

9876

7.M文件法

M文件法和加载法其实十分相似,都是将事先保存在外存中的矩阵读入内存工作空间中,不同点在于加载法读入的是数据文件(.mat),而M文件法读入的是内容仅为矩阵的.m文件。

 

2.3.4矩阵的代数运算

1.求矩阵行列式的值由函数det(A)实现。

>>A=[324;1-15;2–13],D1=det(A)

A=

324

1-15

2-13

D1=

24

2.矩阵加减、数乘与乘法

>>A=[13;2–1];B=[30;12];

>>A+B

ans=

43

31

>>2*A

ans=

26

4-2

>>2*A-3*B

ans=

-76

1-8

>>A*B

ans=

66

5-2

3.求矩阵的逆矩阵只需调用函数inv(A)即可实现。

>>A=[101;212;046]

A=

101

212

046

>>formatrat;A1=inv(A)

A1=

-1/32/3-1/6

-210

4/3-2/31/6

4.矩阵的除法左除即A\B=inv(A)*B,右除即A/B=A*inv(B)。

5.求矩阵的秩求秩运算是由函数rank(A)完成。

6.求矩阵的特征值与特征向量

求矩阵A的特征值和特征向量的数值解,有两个函数可用:

一是[X,λ]=eig(A),另一是[X,λ]=eigs(A)。

但后者因采用迭代法求解,在规模上最多只给出6个特征值和特征向量。

>>A=[1-33;3-53;6-64],[X,Lamda]=eig(A)

A=

1-33

3-53

6-64

X=

0.40820.4082-0.1203

0.4082-0.4082-0.7595

0.8165-0.8165-0.6393

Lamda=

4.000000

0-2.00000

00-2.0000

Lamda用矩阵对角线方式给出了矩阵A的特征值为λ1=4,λ2=λ3=-2。

而与这些特征值相应的特征向量则由X的各列来代表,X的第1列是λ1的特征向量,第2列是λ2的,其余类推。

必须说明,矩阵A的某个特征值对应的特征向量不是有限的,更不是唯一的,而是无穷的。

所以,例中结果只是一个代表向量而已。

有关知识请参阅线性代数教材。

7.矩阵的乘幂与开方

矩阵的乘幂运算A^n,矩阵的开方运算由函数sqrtm(A)实现。

 

8.矩阵的指数与对数

矩阵指数运算的函数有多个,例如expm()、expm1()、expm2()和expm3()等,其中最常用的是expm(A);而对数运算函数则是logm(A)。

9.矩阵转置

单纯的转置运算可以用函数transpose(Z)实现

 

10矩阵结构形式提取与翻转函数

函数

功能

Triu(A)

提取矩阵A的右上三角元素,其余元素补0

Tril(A)

提取矩阵A的左下三角元素,其余元素补0

Diag(A)

提取矩阵A的对角线元素

Flipud(A)

矩阵A沿水平轴上下翻转

Fliplr(A)

矩阵A沿垂直轴左右翻转

Flipdim(A,dim)

矩阵A沿特定轴翻转。

Dim=1,按行翻转;dim=2,按列翻转

Rot90(A)

矩阵A整体逆时针旋转900

 

>>a=linspa

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2