《MATLAB编程及应用》全套教学课件_第1页
《MATLAB编程及应用》全套教学课件_第2页
《MATLAB编程及应用》全套教学课件_第3页
《MATLAB编程及应用》全套教学课件_第4页
《MATLAB编程及应用》全套教学课件_第5页
已阅读5页,还剩555页未读, 继续免费阅读

下载本文档

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

文档简介

MATLAB

编程及应用全套可编辑PPT

课件1.1

MATLAB简介矩阵实验室MATLAB是Matrixlaboratory的缩写,即矩阵实验室。工具箱MATLAB包含40多种工具箱。分为功

能性工具箱和领域型工具箱。三大数学软件MATLAB、Mathematica和Maple。内部函数MATLAB

包含数百个内部函数。1992年MATLAB

4.0版本推出:之后陆续推出4.2、5.0、5.3、6.5等版本,直至7.0版本。时至今日每半年更新一次版本:

以该年年份命名,并以

a和b

区分上半年和下

半年。20世纪70年代子程

序

库

:CleveMoler

博士开发了

EISPACK和LINPACK程

序库用于特征值求解

和解线性方程。1984年Math

Works公司成立:MATLAB推向市场;继续进行研究和开发。第二代专业版诞生:①基于C

语言开发;②具备了数值计算和数据图示化功能。MATLAB诞

生:开发子程序库与FORTRAN的接口程序,取名MATLAB。1.2

MATLAB的产生与发展20世纪70年代后期

1983年春MATLAB

R2021a-trialuse

一部主页

拍图

APP白查挖文件

实

新建

打开

比

文件

量现累文桶

P新建支量打开主量请空工作区分析代码运行并计时Sirulinke的预设2置弥速ara环墙附加功够

帮动社区诗不支结了解MATLAB盗原SIMLUINK中

→

C

Program

FilasMATLAB二的文件夹名

称田

R2021a当前文件夹窗口D命令行窗口名称。

值工作区窗口激活Windows转至!”设置以激活Windows,详细范息

AⅢ

·工作区保存强入如导时本新建屏本新建1.3

MATLAB用户界面工作区

回1.3

MATLAB用户界面>>b=2b=2>>c=a+bC

二3>>d=cos(a)d=0.5403在命令行提示符“>>”后键入语句;按Enter键,MATLAB

会将变量添加到工作区中,并在

命令行窗口中显示结果。>>a=1a

=工1.3.1

命令的执行>>b=2b=2>>c=a+bC=3>>d=cos(a)d=0.5403若要创建更多变量,则只需可在命令行提示符后依次键入即可。1.3.1

命令的执行>>sin(a)ans=0.8415如果语句以分号结束,那么MATLAB会执行计算,但不在命令行窗口中显示输出。如果未指定输出变量,那么MATLAB将使用变量ans(answer的缩略形式)来存储计算结果。>>e=a*b;1.3.1命令的执行>>whosName

Sizea

1x1ans

1x1b

1x1C

1x1Bytes

Class8

double8

double8

double8

doubleAttributes【注意】退出MATLAB

后,工作区中的变量不会保留。此时,可以使用save命令保存数据以供将来使用。>>save

myfile.mat使

用whos可查看工作区的内容。1.3.1命令的执行MMTLAR2024-0D*65+6计性aPl5媒

附

场凸

8连

蜂国

TWLA进中

◆ma=2b2》(c3becaa(n)d-0.3403zin(a)an80.8415》

的

;fxe641505401激

活

Wi

n

d

o

ws邱暂

泉

置

缴W

n

d

a%a【注意】退出MATLAB

后,工作区中的变量不会保留。此时,可以使用save命令保存数据以供将来使用。>>save

myfile.mat1.3.1

命令的执行图1-2当前工作区中的变量通过保存操作,系统会使用.mat扩展名将工作区中的变量保存在当前工作文件夹中一个名为“.MAT”的压缩文件

中。使用load命令可以将MAT文件中的数据还原到工作区中。【提问】要清除工作区中的所有变量,应该用什么命令呢?【练习】请先将工作区保存,然后清除工作区中的全部变量,最后使用load命令将数据还原到工作区中。>>load

myfile.mat1.3.1

命令的执行4MATLA⁸R2021a-tried

nse口主页

坐

APP

家文

户

登录壹太应4新建

实

本新

鞍文性导入款摇薪建二最保存

形打开签是工作区

请空工作

立量9析代码龄选行#计时清

·

代码Simafirk5MUULINX右题预设说盖胳径Paralel+环境附功畅动四世区毒就三洁了解MATAB恤原

三+PregramFlesMATLAE二的文件夹工作区□

老称。R2021田mfikemat在空白命令行中按“个”键,可以

调出历史命令。0.5403b-2c=a+bd=cos(a)sin(a)Le-a*b;save

nyfile.matclearload

nvfile,at人田ans

0.84150.5403激

活W

i

n

d

o

w

s骑至广设置”以激店Windows.洋瞬他惠皿.影建时新>利用方向键“个”“↓”,可以重新调用以前的(历史)命令。再按Enter键,即可执行前一次的命令。1.3.2光标与命令行的操作5而“↓”键的功用则是在按下它并调出历史命令后,与“个”键配合使用,对历史命令进行选择,选定后按Enter键执

行该命令。也可在键入命令的前几个字符后按“个”键。例如,要重新调用历史命令b=2,在命令行键入“b=”后,按“个”键,该历史命令被选中,键入的内容“b=”被黄色标记,同时,历

史命令“b=2”被回调至命令行。1

.3

.2光标与命令行的操作操作键功能说明操作键功能说明个Ctrl+1前寻式调回历史命令行EscCtrl+u清除当前行的全部内

容个后寻式调回历史命令行BackSpace删除光标左边的字符←

一在当前行中左移光标Delete删除光标右边的字符→在当前行中右移光标Ctrl+←一光标左移一个单词PageUp前寻式翻阅当前窗口中的内

容Ctr1+→光标右移一个单词PageDown后寻式翻阅当前窗口中的内

容Ctrl+Z删除光标所在命令行内容Home使光标移到当前行的首端Ctrl+A全选当前窗口内容End使光标移到当前行的末端Alt+BackSpace恢复上一次删除1.3.2光标与命令行的操作常用操作键及快捷键:控制命令含义clc清除命令行窗口中的所有显示内容clear清除内存中的变量和函数clf清除MATLAB的当前图形窗口中的图形dir列出指定目录下的文件和子目录清单cdcd后加路径,改变当前工作子目录;cd+Enter键,显示当前工作子目录disp在运行中显示变量和文字内容:disp(x)或disp(字符')type显示所有指定文件的全部内容:type

filenamehold控制当前图像窗口对象是否被刷新,常与hold

on和hold

off配合使用home发送光标复位命令,显示为清空屏幕而不删除任何文本MATLAB除提供常用的操作键之外,还提供了许多通过键盘在命令行键入的控制命令。1.3.3

工作窗与命令行的操作在MATLAB

系统中,相关的线上

(On-Line)

帮助方式有一下3种。01【注意】MATLAB帮助系统中还有一些在线学习和视频可供初学者快速入门。可通过帮助系统多多尝试和发掘,学会使用帮助系统学习和查询相关学习内容,可以在学习MATLAB

的过程中达到事半功倍的效果。利用菜单栏中的“帮助”(Help)按钮1.4MATLAB帮助系统0203利用lookfor指令主页愉型

APP磁辅器放意

模

型新建

郭建时脚本建

打开

文件食找文件

比放地新建文量入

保布

打开安量数摇工作这孕

工

作

枢

蛮量分析代选行并计时

收旅爽清除

·代科SimdlkSIMULINK预淀设查第怪

附加功

Pealel环填幅磨乌社区身请求支持回了幅MATLAB童建人族)xrmur时区

W

n

d

a

t游理装叶试直

用新学

,施计比》m

7相穿地学怕

她

理1.4MATLAB帮助系统利用菜单栏中的“帮助”按钮查询查询界面基zeis速

率E

湖

法

本

译

文

照MATLAB编程及应用第

2

章MATLAB

基本计算和基础知识使

用MATLAB

进行数学基本计算就像用计算器一样方便、简单;在命令行窗口的命令行提示符后键入算式,

MATLAB

就会把计算结果显示出来。>>1+2+3+4+5+6ans

=21>>1/2ans

=0.50002.1基本计算入门实例算术运算:加(+)、减(-)、乘(*)、除(/或\)及幂次方(^);优先级:如果有括号,那么括号优先执行,而且MATLAB

允许括号嵌套。>>((1+4)*5-12)/2ans=6.50002.1基本计算入门实例>>(2+3i)+(4+5i)ans

=6.0000+8.0000i>>sin(pi/3)ans

=0.8660复数的计算:

MATLAB还具有超越计算器的功能,它认识复数,能够进行复数的计算。三角函数:可以如计算器般进行三角函数的运算。2.1基本计算入门实例变量是指在程序执行过程中其值可以变化的量。用户自定义变量变量系统预定义变量2.2变量以非数字的符号来表达,一般用拉丁字母来表示。变量的定义不需要特别声明数据类型,其定义与赋

值是同时完成的。>>a=3a

=3定义了一个变量a,同时将其赋值为3。2.2.1用户自定义变量在对变量进行命名时,需要满足下列4条规则。①变量名区分大小写,如“a”

和

“A”

是不同的变量。②变量名不能超过63个字符,第63个字符后的字符被忽略。③变量名必须以字母开头,其组成可以是任意字母、数字或

下画线,但不能含有空格和标点符号,如“6”“abc”“ac

%b”

都是不合法的变量名。④关键词、系统命名函数等不能作为变量名,如"if"

“while”等。2.2.1用户自定义变量>>a=3a

=3>>b=5*ab=153

5*3=15

15变量a

变量b先定义变量a,并赋值3;再定义变量b,同时调用变量a的当前值,计算后将结果赋值给变量b2.2.1用户自定义变量预定义变量名含义ans运算结果默认变量名pi圆周率eps浮点数的精度,也是系统运算时确定的极小值nan或NAN非数,如0/0inf无穷大,如1/0或j虚数标志,i=j=sqrt(-1)MATLAB

系统提供了一些用户不能清除的特殊变量,即系统预定义变量。MATALB系统预定义变量及其含义2.2.2系统预定义变量数值类型逻辑类型字符串类型单元类型结构类型2.3数据类型MATLAB

数据类型根据数据存储空间和方

式分类根据数据结构分类整型浮点型标量数组矩阵2.3.1数值类型数值类型分类方法类型子类型符号位数用法整型有符号整型int88a=int32(12)int1616int3232int6464无符号整型uint88a=uint32(12)uint1616uint3232uint6464浮点型单精度浮点型single32a=single(12.34)双精度浮点型double64a=12.342.3.1

数值类型实数的数值类型分类【

注意

】(1)系统默认的数值类型是双精度浮点型,因此,在使

用double时,可以省略double符号。(

2

)当double类型的数值与其他类型的数值进行运算时,

结果为其他类型的数值,single类型的数值不能和整型直

接进行运算,各种不同位数的整型之间也不能直接进行运

算。2.3.1

数值类型函数运算法则例子floor向下取整floor(1.4)=1,floor(3.5)=3,floor(-

3.5)=-4ceil向上取整ceil(1.4)=2,ceil(3.5)=4,ceil(-3.5)=-

3round取最接近的整数,若小数部分是

0.5,则向绝对值大的方向取整round(1.4)=1,round(3.5)=4,round(-

3.5)=-4fix向0取整fix(1.4)=1,fix(3.5)=3,fix(-3.5)=-3因为系统默认的数据类型是双精度浮点型,所以在将变量设置为整数时,需要进行转换。将双精度浮点型转化为整数的转化函数2.3.1

数值类型复数由实部和虚部两部分构成,在MATLAB

中,字符i和j等价,默认作为虚部标志,数值与符号之间的乘号可以省

略。>>a=1+2ia

=1.0000+2.0000i>>b=3+4*jb=3.0000+4.0000i2.3.1

数值类型>>2<3ans

=logical1>>2>3ans

=logical0MATLAB

本身并没有专门提供逻辑类型,而借用整型来描述逻辑类型数据。MATLAB规定,逻辑数据真(true)为1、逻辑数据假(false)

为0。2.3.2逻辑类型MATLAB中的字符串是包含在单引号中的字符集合。>>s=

'你好,MATLAB'%定义字符串变量s

'你好,MATLAB'【注意】在MATLAB

中,所有字符串都用英文半角单引号标识,字符串和字符数组是等价的,字符串中的每个字符

(包括空格)都是字符数组的一个元素。利用length函数

可以求取字符串的长度。length('你好,MATLAB!')ans

=S=2.3.3

字符串类型10单元类型是MATLAB

中比较特殊的一种数据类型,其本质也是数组。■一般数组:所有数组元素只能是同一种数据类型■单元数组:可以把不同的数据类型组合在一起,从而形

成一种比较复杂的数组。2.3.4

单元类型创建单元类型数组的方法:(1)通过赋值语句创建单元类型数组:单元类型数组使用花括号“{}”来创建,使用“,”或空格来分隔单元,使

用“;”来分行。>>A={'x',[2;3;6];10,2*pi}A=2×2cell数组{'x'}

{3×1double}{[10]}

{[6.2832]}2.3.4

单元类型(

2

)

使

用cell函数创建空单元类型数组:先使用cell函

数创建空单元类型数组,预先分配存储空间;然后逐个对元素进行赋值。>>B=cell(1,2)

%创建空单元类型数组BB=1×2cell数组{0×0

double}

{0×0

double}>>B(1,1)={'MATLAB'};B{1,2}='好用!;%为单元类型数组元素分别赋值

B=1×2

cell数

组{'MATLAB'}{好用!'}>>B(1,1)={'MATLAB'};B{1,2}=

'好用!';

%为单元类型数组元素分别赋值

B=1×2

cell数

组{'MATLAB'}{'

好

用!'

}2.3.4

单元类型结构类型是另一种可以将不同的数据类型组合在一起的特殊数据类型,其本质依然是数组。创建单元类型数组的方法:(1)使用赋值语句创建结构类型数组并赋值;(

2

)

使

用struct函数创建结构类型数组并赋值。2.3.5

结构类型(1)使用赋值语句创建结构类型数组并赋值;结构类型变量的使用必须指出结构的属性名,并以操作符“.”来连接结构变量名与属性名,对该属性进行直接赋值,如A.b1、B(2,3).a3等。结构类型数组不同元素的类型可以不

同

。

>>student.Name=

'小明';>>student.Age=18;>>student.Score=88student

=包含以下字段的struct:Name:'小明'Age:18Score:882.3.5

结构类型(

2

)

使

用struct函数创建结构类型数组并赋值。采

用struct函数预先分配存储空间并赋值,具体形式为:结构类型变量=struct(元素名1,元素值1,元素名2,元素值2,…)。例

如

:>>student=struct('Name','小明','Age',18,'Score',88)student

=包含以下字段的struct:Name:'小明'Age:18Score:882.3.5结构类型MATLAB

运算包括算数运算、关系运算、逻辑运算、位运算和集合运算五大类。其中,算数运算、关系运

算、逻辑运算为MATLAB的基本运算。算数运算关系运算

逻辑运算

位运算集合运算2.4.1

算数运算MATLAB

运

算运算符含义十加一减*乘\矩阵左除/矩阵右除矩阵幂次方.*数组乘./数组右除.数组左除.^数组幂次方2.4.1

算数运算MATLAB

的算数运算符及其含义【注意】MATLAB

中的算数运算与数学上的算数运算相比,需要注意和区分以下不同点。(1)除法分为左除和右除。(2)乘、左除、右除和幂次方运算将矩阵看作一个整体,

遵循矩阵运算规则;数组乘、数组幂次方、数组左除和数

组右除按数组元素进行相应的运算。【例2-1】求解算数表达式[1+2×(11-4)]+2³的值。>>(1+2*(11-4))+2^3ans

=2.4.1

算数运算23运算符含义<小于<=小于或等于>大于>=大于或等于==等于N=不等于关系运算是用来判断运算对象之间关系的运算,

一共有6种。MATLAB

的关系运算符及其含义2.4.2关系运算运算符含义&与或~非MATLAB

中的基本逻辑运算符有3种。MATLAB

的逻辑运算符及其含义2.4.3

逻辑运算符号名称含义冒号有多种运算功能,用于定义行向量或截取指定矩阵中的部分=等号为变量赋值。等号左边为变量名、右边为变量的值;分号区别矩阵的行;命令行不输出回显信息小数点描述小数%百分号注释语句,增加程序的可读性…续行符号续行,逗号矩阵每行元素之间的分隔符I单引号矩阵转置运算、复数的共轭值、字符串定义等!感叹号调用系统操作命令[]方括号矩阵的定义()圆括号指定函数中参量的输入{}花括号构成单元类型数组MATLAB中有一些被赋予特殊意义的符号,有一定的特殊含2.5

MATLAB的标点符号和特殊字符函数含义abs(x)对自变量取绝对值sqit(x)对自变量开二次方exp(x)自然底数e的x次方sin(x)x的正弦值[其中x为弧度制,如果需要使用角度制,则采用sind(x)]asin(x)x的反正弦值(其中x为弧度制,角度制同上)cos(x)x的余弦值(其中x为弧度制,角度制同上)acos(x)x的反余弦值(其中x为弧度制,角度制同上)tan(x)x的正切值(其中x为弧度制,角度制同上)atan(x)x的反正切值(其中x为弧度制,角度制同上)log(x)自然对数:求以e为底x的对数log10(x)常用对数:求以10为底x的对数log2(x)求以2为底x的对数在MATLAB

计算中,常常要用到一些数学函数。2.6常用数学函数函数含义round(x)、fix(x)对x进行取整。其中,round为四舍五入,fix为向下取整mod(x,y)求x/y的余数imag(x)、real(x)求x的虚部、实部find(x)寻找变量round(x)、fix(x)对x进行取整。其中,round为四舍五入,fix为向下取整find(x)寻找变量sort(x)将数组元素按照从小到大排序sum(x)数组元素求和roots(x)求解多项式的根axis([x1,x2,y1,y2])设置坐标轴范围在MATLAB

计算中,常常要用到一些数学函数。2.6常用数学函数在MATLAB中,一条命令就是一条语句,其格式与数学表达式十分接近。用户在命令行窗口的命令提示符“>>”后输

入语句并按Enter

键后,该语句就在MATLAB中运行,并在

命令行窗口返回运行结果。函数语句表达式中一般包括运算符、标点符号和常用函数

,表达式按照从左向右的顺序执行。运算的优先级遵循数

学运算的优先级规定,即幂运算优先,其次是乘除法,最后是加减法。若运算中有圆括号,则圆括号优先。【注意】表达式中的圆括号必须使用半角符号。2.7

函数语句2.7

函数语句在MATLAB中“变量=表达式”形式表示将表达式运算后赋值给变量。【例2-2】求的值,并把它赋值给变量。>>a=(5*(7-2)^2)/(2/3)a

=187.5000为了增加代码的可读性,通常通过对代码增添注释来使代码更容易读懂,通过“%”表明标注开始,%后的所有内容均为注

释内容,

MATLAB

在运行时会自动忽略%后的内容。【例2-3】设三角形的3条边的边长为a=8、b=7、c=6,求此三角形的面积。【分析】

S=

√5G-OCc-bG-),

>>a=8;b=7;c=6;>>s=(a+b+c)/2;>>S=sqrt(s*(s-a)*(s-b)*(s-c))

S=20.3332%为变量a、b、c赋值%定义s为三角形的半周长

%利用海伦公式求面积2.7

函数语句其中MATLAB

编程及应用第3章MATLAB

数值计算矩阵是MATLAB进行数据处理和运算的基本元素,即最基本的MATLAB数据结构体就是矩阵。矩阵是按行和列排列的数据元素的二维矩形数组。一般的数学运算也都可以转化成相应的矩阵运算来处理。>>clear>>A=100;>>whos

%列出当前工作空间中所有变量的的变量名、尺寸、所占

字节数及数据类型等NameSizeBytesClassAttributesA

1x1

8

double3.1数据拟合MATLAB

直接输入法创建矩阵步骤:(1)用方括号“□”把所有的矩阵元素括起来。(2)同一行的不同元素用逗号或空格来分隔。(3)用分号";"指定一行元素的结束来分隔行,或者用回车符代替分号。(4)矩阵元素可以是实数或复数,也可以是表达式。如果是表达式,那么系统将自动计算表达式的结果,并赋值给相应的元素。>>a=[123]%构造1×3的矩阵a或行向量aa=1

2

3>>x=[123;456]9%构造2×3的矩阵xX=1

2

34

5

63.1.1

利用直接输入法创建矩阵>>A=zeros(3,2)%利用zeros函数创建3×2全零矩阵A=0

00

00

0>>B=ones(2,4)%利用ones函数创建2×4全幺矩阵B=1

1

1

11

1

1

1MATLAB

中有许多内部函数,可以创建具有特定值或特定结构的矩阵。3.1.2

利用函数创建矩阵函数功能zeros(m,n)创建一个m行n列的全部元素为0的矩阵ones(m,n)创建一个m行n列的全部元素为1的矩阵eye(m,n)创建一个m行n列的单位矩阵rand(m,n)创建一个m行n列的0~1均匀分布的随机矩阵randn(m,n)创建一个m行n列的均值为0、方差为1的标准正态分布随机矩阵linspace(a,b,n)创建一个在[a,b]区间上线性n等分的矩阵[]创建空矩阵diag(X)若X是矩阵,则diag(X)为X的主对角线向量;若X是向量,则diag(X)

产生以X为主对角线的对角矩阵tril(A)提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分3.1.2

利用函数创建矩阵创建矩阵的函数>>x=20+(50-20)*rand(3)X

二25.897934.1987

37.5579

27.532530.5498

36.491738.4813

44.9249

47.5158

>>y=0.6+sqrt(0.1)*randn(3)

y

=0.34560.52290.2370

0.82030.66820.6332

0.86410.23130.8284【例3-1】分别构建随机矩阵x和y,要求x是在区间[20,50]内均匀分布的3阶随机矩阵,

y是均值为0.6、方差为0.1的3阶正态

分布随机矩阵。3.1.2

利用函数创建矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。MATLAB

直接输入法创建矩阵步骤:(1)使用编辑程序或MATLAB

文本编辑器输入文件内容。(2)把输入的内容以M

文件方式存盘。(3)在MATLAB

命令行窗口中输入文件名,就会自动建立一

个矩阵,可供以后显示和调用。3.1.3

利用M

文件创建矩阵保存文件,命名文件名为mymatrix.m;

在命令行窗口的命令行提示符后输入mymatrix,按Enter键后可生成以x为变

量名的矩阵。>>mymatrixX=1

2

3x=[123]例如,打开MATLAB文本编辑器,输入:3.1.3利用M

文件创建矩阵MATLAB

在定义矩阵的同时衍生出了矩阵元素变量。可以用下标来表示矩阵元素,如:A(2,3)表示A

矩阵的第2行第3列的元素;A(:,1)表示矩阵A

的第1列的元素;A(2,:)表示矩阵A

的第2行的元素。3.1.4

矩阵元素与矩阵元素变量序

·腿IM区

⑧把称。田

1224547司激

活

W

i

n

d

o

w

s5暂促置以话Windows,田

a

l

d

k2545T9181112121258354578911151415112《行

面>>A-[123:456;789]

%

定

义

a

x

3

阶

虹

阵

AA-1

23

4

5

67

89

压矩阵元素可以修改。有两种方法:方法

一,可以通过界面的可视化操作直接编辑矩阵的某个元素。先在

工作区中找到定义的矩阵变量名,然后双击变量名进入变量编辑界面。玻些

APP

王盘打开

后s

参红单·新

过螺

第热的显中◆

田7C+Pogannn·MTL码+地

女

快

⑧口

称

·8n2028出mflanuW

9

2

里

A3.1.4

矩阵元素与矩阵元素变量太文地

在

猴变量-A

×A田3x3

double123456789101112112[102456378945678>>AA=12

104

5

67

8

9单击需要修改的元素即可进行修改。例如,选择元素A(1,3),将其值修改为10。在命令行窗口的命令行提示符后键入A,

可查看修改后的矩阵A。3.1.4

矩阵元素与矩阵元素变量>>A=[123;456;789]96定义3×3的矩阵AA=1

2

34

5

67

8

9>>A(2,1)=5;%修改元素变量A(2,1)的值为5方法二,使

用MATLAB

命令访问数组的某个元素,采用“矩阵名(序号1,序号2)=数据”的方式来修改矩阵元素。3.1.4

矩阵元素与矩阵元素变量

3.1.4

矩阵元素与矩阵元素变量【例3-2】输入矩阵A,并将矩阵A

的第1行和第2行元素对调,其中矩5

6

7

89

10

1112>>A(2;:)=b

%将原始矩阵A的第1行元素赋值给第2行元素

A=9

10

1112%取出矩阵A的第1行元素,赋值给变量b%将第2元素赋值给第1行元素9

10

1112>>b=A(1,:)b=1

2

3

4

>>A(1;:)=A(2,:)

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

2

34%输入矩阵A>>A=ones(1,4);>>B=zeros(1,4);>>C=[A

B]C=1

1

1

1

0

0

0

0>>D=[A;B]D=1

1

1

10

0

0

0MATLAB可以使用方括号将现有矩阵连接在一起构建新的矩阵。这种创建矩阵的方法称为串联。要将A和B排列为一个矩阵的两行,可以使用分号:3.1.5

串联矩阵>>A=ones(2,3)A=1

1

11

1

1>>B=zeros(2,2)B=0

00

0>>C=[A

B]C=111001

1

1

0

0

>>D=[A;[B,[0;0]]]D=1

1

1

1

1

10

0

0要串联两个矩阵,它们的大小必须兼容:在水平串联矩阵时,它们的行数必须相同;在垂直串联矩阵时,它们的列数必须相同。3.1.5

串联矩阵>>A(4:5,5:6)=[23;45]

A=10

20

30

0

60

70

80

00

00

10

0

0

0

0

0

0

0000240035>>A(3,4)=1A=1020300607080

00

0

0

1通过将一个或多个元素置于现有行和列索引边界之外,可以将它们添加到矩阵中。MATLAB

会自动用0填充矩阵,使其保持为矩还可以通过在现有索引范围之外插入新矩阵来扩展其大小。3.1.6扩展矩阵形。运算符用途说明十加法A+B表示将A和B加在一起一减法A-B表示从A中减去B*矩阵乘法A*B表示A和B按矩阵乘法规则进行运算矩阵幂次A^k表示矩阵A的k次幂运算/矩阵右除A/B表示矩阵A右除B,即AB-1\矩阵左除A\B表示矩阵A左除除B,即A⁻¹B,矩阵转置A’表示A的列元素与行元素互换矩阵运算是根据矩阵运算规则进行的运算,MATLAB

的处理方法与线性代数中的相同。3.1.7矩阵运算>>A=[1234;5678;9101112]

%输入矩阵AA=1

2

3

45

6

7

89

10

11

12>>[m,n]=size(A)

%检查矩阵A

的阶数m

=3n

=4(1)矩阵的加减运算矩阵的加减是矩阵与矩阵对应元素的加减,其运算符是“+”和“-

”。进行相加减的矩阵的阶数必须相同。如果阶数不同,则系

统显示出错信息。MATLAB

检查矩阵阶数的语句是size。例如3.1.7

矩阵运算>>D=A-B%A、B

对应元素相减D=-1

-1

-3

-44

3

2

18

9

9

10>>E=A+3%矩阵与常量相加:每个元素进行加3的运算

E=4

5

6

7

0

0

0

18

9

10

11

12

13

14

15>>A=[1234;5678;9101112]%输入矩阵A

A=1

2

3

4

5

6

7

89

10

11

12>>B=[2368;1357;1122]%

输入矩阵BB=2

3

6

81

3

5

71

1

2

2>>C=A+B

%A、B对应元素相加

C=3

5

9

126

9

12

1510

11

13

14【例3-3】计算C=A+B,D=A-B,E=A+3

。其中,3.1.7

矩阵运算(2)矩阵的乘法运算矩阵乘法的运算符是“*”。只有当前一矩阵的列数与后一矩阵的>>A=[123;567;91011];

>>B=[159;2610;3711];>>C=A*BC=14

38

6238110

1862

182

302>>D=A*3D=3

6

915

18

2127

30

33系统会提示错误信息。【例3

-4】

计算C=A+B,D=A-B,E=A+3

。

其%输入矩阵A%输入矩阵B%矩阵A与矩阵B相乘%矩阵A与标量3相乘行数相等或至少其中一个为标量时,才能进行乘法运算;否则,3.1.7

矩阵运算(3)矩阵的除法运算矩阵的除法运算分为左除和右除两种,其运算符分别为“\"和“/”。A\B=A-1BB/A=BA-1【注意】A矩阵必须可逆。即①A为方阵;②A的各行(列)线性无关;③行列式的值不等于0。MATLAB提供了函数inv用以求解逆矩阵、函数det用以求解行列式的值、函数eye

用于生成单位矩阵。3.1.7矩

阵

运

算【例3

-

5】

求矩阵

的行列式的值,当其行列式的值不为0

时,求其逆矩阵。3.1.7

矩阵运算>>A=[123;301;421];>>det(B)

%求矩阵B的行列式的值

ans

=0>>inv(B)%B

矩阵的行列式的值为0,数学上%的逆阵并不存在,验证MATLAB对此的处理。警告:矩阵为奇异工作精度。ans

=Inf

Inf

InfInf

Inf

InfInf

Inf

Inf>>B=[555;555;555];>>A/B警告:矩阵为奇异工作精度。ans

=NaN

NaN

NaNNaN

NaN

NaNNaN

NaN

NaN>>B\A

%B左除A警告:矩阵为奇异工作精度。ans

=NaN

NaN

NaNNaN

NaN

NaNInf

NaN

-Inf当数学上的逆矩阵并不存在时,MATLAB

并不会报错,而是给出警告,并提供参考计算结果。3.1.7

矩阵运算>>A=[123;301;421];>>B=[555;555;555];>>C=A\BC=1.11111.11111.1111-0.5556

-0.5556

-0.55561.66671.66671.6667

>>D=B/AD=1.3889

-0.27781.1111

1.3889

-0.27781.11111.3889

-0.27781.1111%输入矩阵A%输入矩阵B【例3-6】已知矩阵,

矩

阵计算A左除B和B右除A。

3.1.7

矩阵运算>>A=[21-3;431;1-42];>>B=[4;5;12];>>X=A\BX=3.0000-2.3000-0.1000【分析】线性方程组一般可以表示成AX=B的形式。其中,A为等式左边各方程式的系数项,X为欲求解的未知项,B为等式右边的已知列向量。

根据线性代数知识,可知,X=A-1B。

因此,在MATLAB

中求解线性方程组可通过矩阵除法运算获得,即X=A\B。通常,X=A\B是A*X=B的解,X=A/B是X*B=A的解。3.1.7

矩阵运算【例3

-7】

求

线

性

方

程

组的

解

。>>A=[21-3;431;1-42];>>A^3ans

=67100

-2071

76

-68-103

-57

11(4)矩阵的乘方运算矩阵的乘方运算使用的运算符是“八”,如果A是一个矩阵,P是

一个整数,则A^P

表示矩阵A自

乘P次。3.1.7

矩阵运算>>A=[21-3;431;1-42]A=2

1-34

3

11

-4

2>>B=A'B=2

4

11

3

-4-3

1

2(5)矩阵的转置运算矩阵转置是将第行第列的元素与第行第列的元素互换,其运算符为“”。3.1.7

矩阵运算对于矩阵运算,MATLAB

还提供了许多矩阵函数,正是因为拥有了如此众多和完善的函数,

MATLAB

才具有了功能强大的数

学处理能力。(1)矩阵行列式的值在MATLAB中,使用函数det(A)求矩阵行列式的值。3.1.8

矩阵的运算函数>>A=rand(5)A=0.93400.33710.1656

0.74820.1524

0.12990.16220.6020

0.45050.8258

0.56880.79430.2630

0.08380.5383

0.46940.31120.6541

0.22900.99610.01190.52850.6892

0.91330.0782>>B=det(A)B=-0.1161例如,构建5阶随机矩阵,并求其行列式的值。3.1.8

矩阵的运算函数>>A=[1,-1,1;5,-4,3;2,1,1];>>B=inv(A)B=-1.4000

0.40000.20000.2000

-0.20000.40002.6000-0.6000

0.2000>>E=A*BE=1.000000-0.00001.0000

0-0.00000

1.0000(2)矩阵求逆对于一个方阵A,

如果存在一个与其同阶的方阵B,使得AB=BA=l(I为单位矩阵),则称B为A

的逆矩阵。当然,A

也是B的逆矩阵。求方阵的逆矩

阵

可

调

用

函

数inv。【例3

-8】

求

方

阵A

的逆矩阵,且验证。3.1.8

矩阵的运算函数(3)抽取对角矩阵在研究矩阵时,有时需要将矩阵的对角线上的元素提取出来形成一个列向

量,有时也需要用一个向量构造一个对角矩阵。提取矩阵的对角线元素和

构造对角矩阵的函数为diag。>>A=[1,2,3;4,5,6];>>D=diag(A)%提取对角线元素D=1

L>>D1=diag(A,1)D1=26diag函数还有一种形式:diag(矩阵名,k),实现提取第k条对角线上的元素。3.1.8

矩阵的运算函数>>diag([1,2,-1,4])ans

=1

0

0

00

2

0

00

0-1

00

0

0

4(3)抽取对角矩阵如果V是一个含有m个元素的向量,那么diag(V)将产生一个m×m对角矩阵,

其主对角线元素即向量V

的元素。3.1.8

矩阵的运算函数D=10000

>>D*Aans

=

1

2

302000123003001000400000512345>>A=ones(5)

A=1

1

11

1

11

1

1工111

1>>D=diag(1:5)1

11工111【例3-9】建立一个5×5的矩阵A,将其第1行元素乘以1,第2行元素3.1.8

矩阵的运算函数乘以2……第5行元素乘以5。1234523454

54

51

1111(4)矩阵重构MATLAB提供将矩阵或向量重构为新矩阵的函数reshape,

其形式有以下

两种。①B=reshape(A,[m,n])。②B=reshape(A,m,n)。【注意】①重构矩阵的元素个数m×n必须与向量元素个数相等。②重构矩阵按列进行。3.1.8矩阵的运算函数>>A=1:10A=1

2

3

4

5

>>B=reshape(A,[5,2])6

78

9

10B=12345678910【例3-10】将10个元素的1×10矩阵(向量)重构为5×2矩阵。3.1.8

矩阵的运算函数>>A=magic(4)%构造4阶魔方矩阵A=16

2

313

51110

8

9

7

61241415

1>>B=reshape(A,0.2)

B=16594211714310615138121【例3-11】将一个4×4方阵重构为一个2列矩阵。为第一个维度指定□,以使reshape自动计算合适的行数。3.1.8

矩阵的运算函数>>A=[1,-1,1;5,-4,3;2,1,1]A=1

-1

1

5

-4

32

1

1>>eig(A)ans

=-3.5688-0.63562.2044(5)求矩阵的特征值设A

为n阶矩阵,是一个数,如果方程Ax=x

存在非零解向量,则称为A

的一个特征值,相应的非零解向量x称为与特征值对应的特征向量。MATLAB中求特征值和特征向量的函数为eig。【例3-12】求例3-8中的矩阵的特征值。3.1.8

矩阵的运算函数>>A=[123;456;780]A=1

2

34

5

6

47

8

0

>>p=poly(A)p=1.0000-6.0000

-72.0000

-27.0000

>>r=roots(p)r=12.1229-5.7345-0.3884>>eig(A)ans

=12.1229-0.3884-5.7345%构造矩阵A%求矩阵A的特征多项式%求特征多项式的根%矩阵A的特征多项式的根是矩阵A的特征值(6)求特征多项式MATLAB中使用poly函数来求矩阵的特征多项式,使用roots函数可以求特

征多项式的根,特征多项式的根是矩阵的特征值。3.1.8

矩阵的运算函数函数名功能det计算方阵的行列式的值inv方阵的逆阵diag抽取对角矩阵reshape向量重构矩阵或数组eig求特征值和特征向量poly求特征多项式rank矩阵的秩expm矩阵指数logm矩阵对数sqitm矩阵开方除以上介绍的矩阵函数外,还有一些其他的矩阵函数。如下表:3.1.8

矩阵的运算函数可以把向量看作只有一行或一列的矩阵,也可以认为矩阵是由一组向量构成的,即可以将向量看作矩阵的组成元素。向量分行向量和列向量,向量的构造方法有两种:①按矩阵构造方式构造向量;②利用字符":"生成具有固定步长的行向量;③利用函数linspace生成在一定数值区间内等间距产生一定数量元素的行向量。>>x=1:0.5:3

%产生以1为初值、步长为0.5、不大于3的行向量X=1.00001.50002.00002.5000

3.0000>>y=1:5%产生以1为初值、默认步长为1、不大于5的行向量y

=1

2

3

4

5>>z=linspace(2,12,6)%产生以2为初值、12为终值、6个元素间距相等的行向量Z

=2

4

6

810

123.2

向量>>x=1:0.5:3

%产生以1为初值、步长为0.5、不大于3的行向量X=1.00001.50002.0000

2.50003.0000>>y=x'y

=1.0000

1.5000

2.0000

2.50003.0000列向量可通过行向量的转置运算获得。3.2

向量数组就是相同数据类型的元素按一定顺序排列的集合,是用于程序设计的数据结构中的概念,而并不同矩阵一样是

数学上的概念。【注意】对于MATLAB

工作空间中的变量,MATLAB

并不做矩阵和数组的区分,只是在调用不同的函数和运用不同的运算符时才将其进行分类和区分,进行相应的计算。MATLAB的乘法运算(*)、除法运算

(/或\)和幂次方运算(^),指数函数expm、

对数函数logm

和开方函数sqrtm均是对矩阵进行的,即把矩阵作为一个整体来运算,其变量

即矩阵。若对所有元素按单个元素进行运算,则这类运算即数组运算,

其对应的变量即数组。3.3

数组数组有一维数组、二维数组和多维数组,其创建与引用有所不同。(1)一维数组一维数组的创建与矩阵相同,每个数组元素由一个下标以“数组名(元素序号)”的形式来索引。例如,1×5一维数组索引示意图如图所示。(1)(2)(3)(4)(5)3.3.1

数组的创建与索引(2)二维数组二维数组的创建与矩阵相同。在数组中,两个维度由行和列

表示,每个数组元素由两个下标以“数组名(行序号,列序号)”的

形式来索引。>>A=[123]%—维数组的创建与矩阵相同A=1

2

3>>A0=A(1)A0=1对于一维数组A,A(1)表示一维数组A的第1个元素。3.3.1

数组的创建与索引5×5二维数组索引示意图(1,1)

(1,2)

(1,3)

(1,4)

(1,5)(2,1)

(2,2)(2,3)

(2,4)

(2,5)(3,1)

(3,2)(3,3)

(3,4)

(3,5)(4,1)

(4,2)(4,3)

(4,4)

(4,5)对于二维数组A,A(1,2)

表示二维数组A

的第1行第2列元素。>>X=[12;34];

%二维数组的创建与矩阵相同>>X12=X(1,2)X12=23.3.1

数组的创建与索引页

列(1,1,3)(1,2,3)(1,3,3)(1,4,3)(1;5,3)(2,1,3)(2,2,3)(2,3,3).(2,4,3)(2,5,3)(1,1,2)(1,2,2)(1,3,2)(1,4,2)(1;5,2)(3,3,3)(3,4,3)(3,5,3)(2.1.2)(2.2.2(2,3,2)-(2,4,2)(2,5,2)(4,3,3)(4,4,3)(4,5,3)(1,1,1)(1,2,1)(1,3,1)(1,4,1)(1,5,1)(3,3,2)(3,4,2)(3,5,2)(5,3,3)(5,4,3)(5,5,3)(2,1,1)(2,2,1)(2,3,1)(2,4,1)(2,5,1)(4,3,2)(4,4,2)(4,5,2)(3,1,1)(3,2,1)(3,3,1)(3,4,1)(3,5,1)(5,3,2)(5,4,2)(5,5,2)(4,1,1)(4,2,1)(4,3,1)(4,4,1)(4,5,1)(5,1,1)(5,2,1)(5,3,1)(5,4,1)(5,5,1)(3)多维数组MATLAB中的多维数组是指具有两个以上维度的数组,是二维数组的扩展,使用额外的下标进行索引。例如,三维数组使

用3个下标,以“数组名(行序号,列序号,页序号)”进行索引。3.3.1

数组的创建与索引行>>A=[123;456;789]A=4

72369创建多维数组:先创建二维矩阵,再进行扩展。例如,创建一个3×3×3的三维数组。首先定义一个3×3矩阵,作为三维数组中的第一页。3.3.1

数组的创建与索引8>>A(:,2)=[101112;131415;161718]A(::,1)=1

2

3

4

5

67

8

9

温馨提示

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

评论

0/150

提交评论