《MATLAB程序设计电子教案第3章.ppt》由会员分享,可在线阅读,更多相关《MATLAB程序设计电子教案第3章.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3 3章章 MATLAB MATLAB 程序设计程序设计(1)(1)1第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)主要内容:主要内容:关系运算和逻辑运算规则;关系运算和逻辑运算规则;常用的逻辑函数;常用的逻辑函数;函数文件的定义和调用;函数文件的定义和调用;数据文件的读写。数据文件的读写。2第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.13.1关系运算关系运算3.1.1 3.1.1 概述概述
2、 关关系系运运算算表表达达式式的的计计算算结结果果是是一一个个由由0 0和和1 1组组成成的的逻逻辑辑数数组组(logical logical arrayarray),在在数数组组中中用用1 1表示真,表示真,0 0表示假。表示假。3第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.1.2 关系运算符关系运算符6 6种关系运算符种关系运算符 (小于小于)=(大于大于)=(大于或等于大于或等于)=(等于等于)=(不等于不等于)4第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB
3、 MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.1.3 关系运算规则关系运算规则关系运算符的运算法则为:关系运算符的运算法则为:l1 1 当两个比较量是当两个比较量是标量标量时,直接比较两数的大时,直接比较两数的大小。若关系成立,关系表达式结果为小。若关系成立,关系表达式结果为1 1,否则,否则为为0 0。l2 2 当参与比较的量是两个当参与比较的量是两个同型的矩阵同型的矩阵时,比较时,比较是对两矩阵相同位置的元素按标量关系运算规是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个
4、与原矩阵同型的矩阵,它系运算的结果是一个与原矩阵同型的矩阵,它的元素由的元素由0 0或或1 1组成组成。5第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)l3 3 当当参参与与比比较较的的一一个个是是标标量量,而而另另一一个个是是矩矩阵阵时时,则则把把标标量量与与矩矩阵阵的的每每一一个个元元素素按按标标量量关关系系运运算算规规则则逐逐个个比比较较,并并给给出出元元素素比比较较结结果果。最最终终的的关关系系运运算算的的结结果果是是一一个个与与原原矩矩阵阵同同型型的的矩矩阵阵,它它的的元元素素由由0 0
5、或或1 1组组成。成。l4 4 对对于于复复数数,、=、=,仅仅对对参参加加比比较较变变量量的的实实部部进进行行比比较较,=和和 =,则同时对实部和虚部进行比较。则同时对实部和虚部进行比较。6第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-13-1 分析语句分析语句a=2+2=4a=2+2=4的执行结果的执行结果 例例3-23-2 分析语句分析语句a=fate;b=cake;result=a=b的的 执执 行行结果。结果。7第第第第3 3 3 3章章章章 MATLAB MATLAB MATL
6、AB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-33-3 已已知知a=1 2 3 4;b1=3,b2=0.1 2.1 2.9 4.1,分分析析a与与b1,b2的的六六种种关关系系运运算算的的结结果。果。8第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.1.4 关系运算的应用关系运算的应用1 1 findfind函数函数函数函数findfind函数的格式为:函数的格式为:lindices=find(X)功能:功能:返回数组返回数组X X的非零元素的序号,如无非零
7、元的非零元素的序号,如无非零元素,返回空数组。素,返回空数组。li,j=find(X)功能:功能:返回数组返回数组X X的非零元素的行号和列号,此格的非零元素的行号和列号,此格式很适合稀疏数组。式很适合稀疏数组。li,j,v=find(X)功能:功能:返回数组返回数组X X的非零元素的行号、列号以及列的非零元素的行号、列号以及列向量。向量。9第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例 3-4 已已 知知 A=4,-65,-54,0,6;56,0,67,-45,0,分析下列语句的功能。,分析
8、下列语句的功能。find(A4)%找出大于找出大于4的元素的序号的元素的序号i j=find(A,1)%找出一个不为零的元素的行号、列号找出一个不为零的元素的行号、列号i j=find(A,1,first)%找出第一个不为零的元素的行号、列号找出第一个不为零的元素的行号、列号i j=find(A,1,last)%找出最后一个不为零的元素的行号、列号找出最后一个不为零的元素的行号、列号10第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)2 2 提取子数组提取子数组 建立逻辑数组的函数建立逻辑数组的函数
9、logicallogical的格式:的格式:logicallogical(x x)功能:功能:转换数组转换数组x x为逻辑数组为逻辑数组11第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-53-5 演演示示用用逻逻辑辑数数组组来来提提取取子子数数组组 的方法的方法a=1 2;3 4;5 6;l1=logical(1 0 1)%给出逻辑向量给出逻辑向量l1l2=logical(1 1 0)%给出逻辑向量给出逻辑向量l2l2a(l1,l2)%提取提取a a的部分元素,即的部分元素,即1 1、3
10、3行且行且1 1、2 2列的元素列的元素12第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-63-6 建立任意的建立任意的3333的矩阵,并求的矩阵,并求 出能被出能被3 3整除的元素。整除的元素。A=1 0 3;2 9-1;-3 -9 0;%生成生成3333的矩阵的矩阵A AP=rem(A,3)=0%判断判断A A的元素是否可以被的元素是否可以被3 3整除整除A(P)%求出被求出被3 3整除的元素整除的元素如果求上述矩阵中能被如果求上述矩阵中能被5 5整除的元素呢?整除的元素呢?P=rem
11、(A,5)=013第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-73-7 求三阶魔方矩阵中绝对值大于求三阶魔方矩阵中绝对值大于7 7的元素。的元素。a=magic(3);方法方法1 x=abs(a)7;y=abs(b)7;%判断判断a a、b b元素是否绝对值大于元素是否绝对值大于7 7 a(x),b(y)%求出绝对值大于求出绝对值大于7 7的元素的元素方法方法2:应用应用find函数函数a=magic(3);b=magic(4);x=find(abs(a)7),y=find(abs(b)
12、7)14第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.2 3.2 逻辑运算逻辑运算3.2.1 逻辑运算符和运算法则逻辑运算符和运算法则5 5种逻辑运算符:种逻辑运算符:&(与与)|(或或)(非非)&(先决与先决与)|(先决或先决或)15第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)逻辑运算的运算法则为:逻辑运算的运算法则为:1)1)在逻辑运算中,确认非零元素为真,用在逻辑运算中,确认非零元素为真,
13、用1 1 表表示,零元素为假,用示,零元素为假,用0 0表示。表示。2)2)设参与逻辑运算的是两个标量设参与逻辑运算的是两个标量a a和和b b,那么:,那么:la&ba&b a,b a,b全为非零时,运算结果为全为非零时,运算结果为1 1,否则为,否则为0 0。la|ba|b a,b a,b中只要有一个非零,运算结果为中只要有一个非零,运算结果为1 1。la a 当当a a是零时,运算结果为是零时,运算结果为1 1;当;当a a非零时,非零时,运算结果为运算结果为0 0。16第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设
14、计(1)(1)(1)(1)l&(&(先先决决与与)当当该该逻逻辑辑运运算算符符的的左左边边为为1 1(真真)时,才继续执行该符号右边的运算时,才继续执行该符号右边的运算。l|(先先决决或或)当当逻逻辑辑运运算算符符的的左左边边为为1(1(真真)时时,就就不不需需要要继继续续执执行行该该符符号号右右边边的的运运算算,而而立立即即得得出出该该逻逻辑辑运运算算结结果果为为1(1(真真);否否则则,就就要要继继续续执执行行该该符符号号右右边边的的运运算算。注注意意:&(&(先先决决与与)和和|(先先决决或或)对对标标量量计算无意义。计算无意义。17第第第第3 3 3 3章章章章 MATLAB MATL
15、AB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3)3)若参与逻辑运算的是两个同型矩阵,那么若参与逻辑运算的是两个同型矩阵,那么运算将对矩阵相同位置上的元素按标量规则运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同逐个进行。最终运算结果是一个与原矩阵同型的矩阵,其元素由型的矩阵,其元素由1 1或或0 0组成。组成。4)4)若参与逻辑运算的一个是标量,一个是矩若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是之间按标量规则逐个进
16、行。最终运算结果是一个与矩阵同型的矩阵,其元素由一个与矩阵同型的矩阵,其元素由1 1或或0 0组成。组成。5)5)逻逻辑辑非非是是单单目目运运算算符符,也也服服从从矩矩阵阵运运算算规规则。则。18第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-8 求求三三阶阶和和四四阶阶的的魔魔方方矩矩阵阵中中绝绝对对值值大于大于7、小于、小于10的元素及元素的数目。的元素及元素的数目。方法方法1 1a=magic(3);b=magic(4);%生成三阶和四阶的魔方矩阵生成三阶和四阶的魔方矩阵x=abs(a
17、)7&abs(a)7&abs(b)7&abs(a)7&abs(b)10)length(x)length(y)a(x)b(y)方法方法2 应用应用find函数函数20第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.2.2 3.2.2 逻辑函数逻辑函数 1 关系逻辑函数关系逻辑函数l1)any1)any any(x)any(x)如如果果向向量量x x中中的的有有一一个个元元素素为为非非零零值值,那那么么返返回回1 1;否则,返回;否则,返回0 0。any(A)any(A)对对矩矩阵阵A A进进行行列
18、列运运算算,根根据据相相应应列列是是否否所所有有元元素都为非零值,返回一个元素为素都为非零值,返回一个元素为1 1和和0 0的行向量。的行向量。l2 2)allall all(x)all(x)如如果果向向量量x x中中所所有有的的元元素素都都是是非非零零值值,那那么么返返回回1 1;否则,返回;否则,返回0 0。all(A)all(A)对对矩矩阵阵A A进进行行列列操操作作,根根据据相相应应列列是是否否包包含含非非零元素,返回元素为零元素,返回元素为1 1和和0 0的一个行向量。的一个行向量。21第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程
19、序设计程序设计程序设计(1)(1)(1)(1)2 特殊数据判断函数特殊数据判断函数常用的特殊数据判断函数:常用的特殊数据判断函数:lisinf(A)isinf(A)返回一个与返回一个与A A同型的数组,该数组元素的同型的数组,该数组元素的值根据值根据A A的相应位置元素的值为无穷大的相应位置元素的值为无穷大infinf时设置为时设置为1 1,否则为,否则为0 0。lisnan(A)isnan(A)返回一个与返回一个与A A同型的数组,该数组元素的值同型的数组,该数组元素的值根据根据A A的相应位置元素的值为的相应位置元素的值为NaN NaN 时设置为时设置为1 1,否则,否则为为0 0。lis
20、finite(A)isfinite(A)返返回回一一个个与与A A同同型型的的数数组组,该该数数组组元元素素的的值值根根据据A A的的相相应应位位置置元元素素的的值值为为有有限限值值时时设设置置为为1 1,否则为,否则为0 0。22第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)当当a=pi a=pi NaN NaN Inf Inf-Inf-Inf时时,分分析析下下列列语语句句的执行结果的执行结果lisinf(a)lisnan(a)lisfinite(a)23第第第第3 3 3 3章章章章 MATL
21、AB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-10 当当A=-6,NaN,Inf,5;-Inf,-pi,eps,0 时,分析下列语句的执行结果。时,分析下列语句的执行结果。lall(A)lall(all(A)lany(A)lany(any(A)lisnan(A)lisinf(A)lisfinite(A)24第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3 数组类型函数数组类型函数 常用的数据类型函数常用的数据类型函数如下:如下:li
22、slogical(X)islogical(X)如果如果X X是逻辑数组,则返回是逻辑数组,则返回1 1;否则,返回;否则,返回0 0lissparseissparse(S S)如果如果S S是稀疏数组,则返回是稀疏数组,则返回1 1;否则,返回;否则,返回0 0lisreal(A)isreal(A)如果如果A A是一个不带虚部的实矩阵,则返回是一个不带虚部的实矩阵,则返回1 1;否则,;否则,返回零。返回零。lisempty(A)isempty(A)如果如果A A是一个空数组,则返回是一个空数组,则返回1 1;否则返回;否则返回0 0。25第第第第3 3 3 3章章章章 MATLAB MATL
23、AB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)lisequal(A,B)isequal(A,B)如如果果A A和和B B是是同同型型的的,并并且且数数组组的的元元素素也也相相同同,则则返返回回1 1;否则返回;否则返回0 0。lisscalar(S)isscalar(S)如果如果S S是是1 x 11 x 1的矩阵(标量),则返回的矩阵(标量),则返回1 1;否则返回;否则返回0 0。lisvector(V)isvector(V)如如果果V V 是是1 1 x x n n的的矩矩阵阵(行行向向量量)或或n n x x 1 1的的矩矩阵阵(列向量),则
24、返回(列向量),则返回1 1;否则返回;否则返回0 0。lisnumeric(A)isnumeric(A)如果如果A A是数值数组,则返回是数值数组,则返回1 1;否则返回;否则返回0 0。lisinteger(A)isinteger(A)如果如果A A是整数型数值数组,则返回是整数型数值数组,则返回1 1;否则返回;否则返回0 0。26第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)lisfloat(A)isfloat(A)如果如果A A是浮点型数值数组,则返回是浮点型数值数组,则返回1 1;否则
25、返回;否则返回0 0。lischar(s)ischar(s)判断判断s s是否为字符串,返回是否为字符串,返回1 1表示为字符串;否则,表示为字符串;否则,返回返回0 0。lisletter(s1)isletter(s1)在逐个字符的基础上比较字符的类别是否为字母,在逐个字符的基础上比较字符的类别是否为字母,返回返回1 1表示为字母。表示为字母。liscell(C)iscell(C)判断判断C C 是否为元胞数组,如果是,返回是否为元胞数组,如果是,返回1 1;否则返;否则返回回0 0。lisstruct(S)isstruct(S)如果如果S S是构架数组,返回是构架数组,返回1 1;否则,返
26、回;否则,返回0 0。27第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-103-10 分分析析数数据据类类型型函函数数构构成成语语句句的的执执 行结果。行结果。a=eye(4);islogical(a),b=logical(a);islogical(b)b=speye(4);issparse(b)a=ones(4);isreal(a)isfloat(single(pi)isfloat(double(pi)isfloat(int8(3)s=string;ischar(s)28第第第第3 3
27、3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.2.3 运算符优先级运算符优先级MATLAB中各种运算符的优先级如下:中各种运算符的优先级如下:l(矩阵转置矩阵转置)、(矩阵幂矩阵幂)和和.(数组转置数组转置)、.(数组数组幂幂)l (逻辑非逻辑非)l*(乘乘)、/(左除左除)、(右除右除)和和.*(点乘点乘)、./(点左除点左除)、.(点右除点右除)l+、-(加减加减)l:(冒号冒号)l、=、=l&(逻辑与逻辑与)l|(逻辑或逻辑或)l&(先决与先决与)l|(先决或先决或)29第第第第3 3 3 3章章章章
28、MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.3 M文件文件3.3.1 M文件概述文件概述 用用MATLABMATLAB语言编写的程序,称为语言编写的程序,称为M M文件文件。lM M文件可以根据调用方式的不同分为两类:文件可以根据调用方式的不同分为两类:命令文件和函数文件。命令文件和函数文件。l两种工作方式:两种工作方式:交互式的命令行工作方式和交互式的命令行工作方式和M M文件的程序工作方式。文件的程序工作方式。30第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程
29、序设计程序设计(1)(1)(1)(1)3.3.2 M文件的建立文件的建立1 建立新的建立新的M文件文件 为为建建立立新新的的M M文文件件,启启动动MATLABMATLAB文文本本编编辑辑器器有有3 3种方法:种方法:1)1)菜单操作。菜单操作。2)2)命令操作。命令操作。3)3)命令按钮操作。命令按钮操作。31第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.4 3.4 分支语句分支语句3.4.1 if 结构结构格式格式1 1:if if 条件条件 语句组语句组 end end32第第第第3 3
30、 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)格式格式2 2:if if 条件条件 语句组语句组1 1 else else 语句组语句组2 2 end end33第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)格式格式3 3:if if 条件条件1 1 语句组语句组1 1 elseif elseif 条件条件2 2 语句组语句组2 2 elseif elseif 条件条件m m 语句组语句组m m else else
31、 语句组语句组m+1m+1 end end34第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-123-12 计算分段函数计算分段函数 的值。的值。35第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.4.2 3.4.2 switch-caseswitch-case结构结构一般一般switch-caseswitch-case语句格式为:语句格式为:switch switch 表达式表达式 case
32、 case 值值1 1 语句组语句组1 1 case case 值值2 2 语句组语句组2 2 case case 值值m m 语句组语句组m m otherwise otherwise 语句组语句组m+1m+1endend36第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)l例例 3-13 3-13 求分段函数求分段函数 的值。的值。37第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-143-1
33、4 通通过过键键盘盘输输入入百百分分制制成成绩绩,输输 出成绩的等级。出成绩的等级。程程序序中中90-10090-100分分为为字字符符A A表表示示,80-89,80-89分分为为字字符符B B表表示示,70-79,70-79分分为为字字符符C C表表示示,60-69,60-69分分为为字符字符D D表示表示,60,60分以下为字符分以下为字符E E表示。表示。38第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)3.4.3 try-catch结构结构try-catch结构格式为格式为:try try 语句组语句组1 1 catch catch 语句组语句组2 2 end end 39第第第第3 3 3 3章章章章 MATLAB MATLAB MATLAB MATLAB 程序设计程序设计程序设计程序设计(1)(1)(1)(1)例例3-153-15 对对n n阶魔方阵的行进行引用,当阶魔方阵的行进行引用,当“行行 下下标标”超超出出魔魔方方阵阵的的最最大大行行数数时时,改改 为为对对最最后后一一行行的的引引用用,并并显显示示“出出错错”警告。警告。40