MATLAB8.5教程第6章程序设计.ppt_第1页
MATLAB8.5教程第6章程序设计.ppt_第2页
MATLAB8.5教程第6章程序设计.ppt_第3页
MATLAB8.5教程第6章程序设计.ppt_第4页
MATLAB8.5教程第6章程序设计.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

MATLAB程序设计就是编写M 文件,利用程序结构中的顺序语句、循环语句和分支语句,以及各自的流控制机制,相互配合,达到解决各种复杂问题的方法,使其在科学研究、实践操作中的应用更加深入。 本章重点 关系运算与逻辑运算 顺序语句 循环语句 分支语句,第六章 程序设计,6.1 运算符及其操作运算,在MATLAB编程中,除了经常使用的算术运算符外,还会遇到判断结构,即根据某种条件的数值0或者1而得出不同的结论,这就需要通过某种表达式来产生这种逻辑上的判断数值0或者1,而能够达到这种要求的就是关系运算符和逻辑运算符。,6.1.1 算术操作运算,MATLAB使用的算术运算符为:加()、减()、乘(*)、除(/)、左除()、幂(),以及小括号(),其运算法则在数值计算章节中的数组运算和矩阵运算中都已介绍。具体内容参见数组运算指令(表2-3)和矩阵运算指令与含义(表2-5)。在算术操作过程中,可以随时使用MATLAB平台上提供的大量运算函数,如表2-2提供了常用的基本函数。,6.1.2 关系操作运算,关系操作运算是用关系运算符来实现,它可用来比较两个标量,或两个同样大小的数组,或一个数组和一个标量(实际是数组中的每一个元素与标量比较),比较结果产生0(逻辑假,false)或者1(逻辑真,ture)。 格式:a op b % a和b是算术表达式、变量、字符串等,op是一种关系运算符 常用的比较关系运算符如表6-1所示:,表 6-1 比较关系运算符及含义,6.1.3 逻辑操作运算,逻辑操作运算是由逻辑运算符来实现,主要是使用“与”、“或”将多个表达式组合在一起,或者是对关系式取反,具体格式可写为a&b、a|b、a等。 逻辑运算符及对应的含义,以及逻辑操作运算函数如表6-2所示。,表 6-2 逻辑运算符含义及函数表示,6.1.3 逻辑操作运算,逻辑操作运算法则如下: (1)a&b或and(a,b):表示a和b作“元素逻辑与”运算。当a和b全为非零时,运算结果为1,否则为0。 (2)a&b:表示a和b作“捷径逻辑与”运算。当a为逻辑真(1)时,才计算b的逻辑值;当a为逻辑假(0),则无需计算b的逻辑值,而直接返回逻辑假(0)。 (3)a|b或or(a,b):表示a和b作“元素逻辑或”运算。当a和b只要有一个非零,运算结果为1,否则为0。 (4)a|b:表示a和b作“元素逻辑或”运算。当a为逻辑假(0)时,才计算b的逻辑值;当a为逻辑真(1),则无需计算b的逻辑值,而直接返回逻辑真(1)。 (5)a或not(a):表示对a作“逻辑非”运算,当a是零时,运算结果为1,否则为0;,6.1.3 逻辑操作运算,除了上述逻辑运算符及函数外,MATLAB还提供了其他逻辑运算函数。基本逻辑运算函数如下: (1)xor(x,y):异或运算函数,当x与y不同时,返回1;x与y相同时返回0。 (2)any(x):如果向量x中存在非零元素,则返回1,否则,返回0;如果矩阵x中每一列均有非零元素,则返回1,否则,返回0。 (3)all(x):如果向量x中所有元素非零,则返回1,否则,返回0;如果矩阵x中每一列所有元素非零,则返回1,否则,返回0。,6.1.4 运算符优先级,当多个运算符和变量写成一个MATLAB表达式时,运算符的优先次序必须明确。通常所有的运算符,算术运算符优先级最高,关系运算符次之,逻辑操作符的优先级最低。具体优先级次序在表6-3中依从上到下的顺序由高到低排序。同一行的各运算符具有相同的优先级,其运算符法则是在表达式中从左到右依次进行运算。若在不确定优先级情况下,建议采用小括号运算符来明确运算的先后顺序。,6.1.4 运算符优先级,6.2 向量化和预分配,1向量化 为使MATLAB高效运行,在M文件中最好把算法向量化。即将程序语言中的for循环,可用向量或矩阵运算来代替。 譬如在求之和时,我们分别使用for循环语句和向量化编写程序如下: %for循环程序 s=0; for k=1:50 s=s+1/(2*k-1); k=k+1; end s %向量化程序 x=1:2:99; s=sum(1./x),6.2 向量化和预分配,2预分配 若一条代码无法向量化,可以事先将所要输出的结果进行预先分配,即预先给出存储空间,这样可以加快for循环。 譬如在矩阵内存预分配时,划定一个固定的内存块,各数据可直接按行、列存放到相应的位置。若矩阵中不进行预配置内存,则随着行数、列数的变大,MATLAB就必须不断地扩充维数,这样就会大大降低程序的执行效率。,6.3 顺序语句,顺序语句是指依次按顺序执行程序的各条语句,它不需要任何特殊的流控制。 格式:expression %执行表达式命令,显示表达式值 variable=expression %将表达式赋值给变量variable,6.4 循环语句,循环语句一般用于有规律的重复计算。被重复执行的语句称为循环体,控制循环语句走向的语句称为循环条件。MATLAB中有for循环和while循环两种语句。,6.4.1 for循环,for 语句可完成指定次重复的循环,这是广泛应用的语句。 1for 语句的简单形式 格式:for variable=expression statements end 说明:每当循环变量variable取expression中的一个值时,就执行循环体statements一次,直到取完expression中的值。expression常用数组形成表示。 2多重嵌套的for 循环,6.4.2 while循环,while循环是不定次重复的循环语句,即循环次数不固定。 格式:while expression statements end 说明:while语句可不定次数地重复执行statements。当expression为逻辑真或非零值时,就重复执行statements。因此,expression的值应该受到statements的影响,否则这种循环无法结束。通常表达式给出的是一个标量值,但也可以是数组或者矩阵,如果是后者,则要求所有的元素都必须为真。,6.5 条件语句,如果在程序中需要根据一定条件来执行不同的操作时,可以使用条件语句。if是MATLAB中最常用的条件执行语句,它与end语句一起构成各种格式。,6.5.1 if-else-end结构,1if-end结构 最简单的条件语句是仅由if和end组成的语句,它可根据逻辑表达式的值选择是否执行。 格式:if expression statements end 说明:当表达式expression的值为逻辑真或非零值时,执行语句组statements。expression通常由关系操作符、逻辑运算符、算术运算符等构成,statements可以是多个语句。,6.5.1 if-else-end结构,2if-else-end结构 利用else和elseif可进一步给出条件,从而构成复杂的条件语句。else表示当前面的if(也可能是elseif)表达式为零或逻辑假时,执行与之相关联的语句。elseif语句表示当前面的if或elseif为零或逻辑假时,计算本语句的表达式;当表达式为非零或逻辑真时,执行与之相关联的语句。 格式:if expression statements1 else statements2 end 说明:当expression为逻辑真或非零值时,执行statements1;否则执行statements2。,6.5.2 switch-case 结构,switch-case-otherwise分支结构主要实现根据表达式的值,在几种情况之间切换的功能。 格式:switch expression(scalar or string) case value1 statements1 case value2 statements2 otherwise statementsn end,6.6 试探结构,try- catch语句是一种错误处理语句,提供一种捕获错误的方法。 格式:try statements1 catch statements2 end 说明:通常情况下,只执行statements1,但当在执行statements1 语句发生错误时,catch控制块就可捕获它,会执行statements2,这样可以在statements2 中对错误作适当处理。可调用lasterr函数查询出错原因。try和catch控制块中的语句之间用逗号隔开。,6.7 流控制命令,在许多程序设计中会碰到需要提前终止循环、跳出子程序、显示出错信息等情况,因此还需要其它的流控制语句来实现这些功能。 6.7.1 continue命令 continue命令的作用是结束本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断,它用在for或while循环结构体内,并和if语句合用来强制终止循环。 6.7.2 break命令 break命令的作用是终止本次循环,跳出最内层循环,即不必等到循环的结束而是根据条件退出循环,它用在for或while循环结构体内,并和if语句合用来强制终止循环。,6.7 流控制命令,6.7.3 return命令 return命令可使正在运行的函数正常退出,并返回调用它的函数继续运行。经常用于函数的末尾作为正常结束函数的运行,当然也可用在某条件满足时强行结束执行该函数。当程序进入死循环则按Ctrl+break键来终止程序的运行。 6.7.4 error和warning命令 格式:error(message) warning(message) 说明:error命令是用来指示出错信息并终止当前函数的运行,warning命令用来指示警告信息后程序仍继续运行。,6.7 流控制命令,6.7.5 input命令 命令input用来提示用户从键盘输入数据、字符串或表达式,并接收输入值。 格式:x=input(n) %在屏幕上显示提示信息n,等待用户的输入(可以是一个数或一个代数式),并将输入值(或运算后的值)赋给变量x y=input(n,s) %返回的字符串作为文本变量而不是作为变量名或者数值 说明:在提示信息字符串中,n表示换行,表示一个反斜杠。,6.7 流控制命令,6.7.6 keyboard命令 命令keyboard被放置在M文件中,将停止文件的执行并将控制权交给键盘。通过在提示符前显示K来表示一种特殊状态。 如在某个位置加入keyboard 命令,则执行到这句话时,MATLAB 的命令窗口将显示如下代码: K 如果要恢复正常的指示符(),只需在(K)之后输入return即可。,6.7 流控制命令,6.7.7 pause命令 pause命令用于暂时中止程序的运行,等待用户按任意键继续进行。 格式:pause %停止M文件的执行,按任意键继续 pause(n) %中止执行程序n秒后继续,n是任意实数 pause on %允许后续的pause命令中止程序的运行 pause off %禁止后续的pause命令中止程序的运行,6.8 综合实例三角形面积计算,【例6-14】 已知三角形的三条边的长度为a、b、c,面积公式为,其中,试编写程序求三角形的面积。 (1)在编辑窗口编写程序: a=input(请输入一个数a:) b=input(请输入一个数b:) c=input(请输入一个数c:) if a0|b0|c0 disp( a、b、c 必须是正数.) return end if a+bc|a+cb|b+ca disp(三角形不存在.) return end s=(a+b+c)/2; A=sqrt(s*(s-a)*(s-b)*(s-c) %三角形的面积,6.8 综合实例三角形面积计算,(2)在命令行窗口中执行程序,并给a、b、c赋不同值,结果如下: 请输入一个数a:-4 a = -4 请输入一个数b:5 b = 5 请输入一个数c:7 c = 7 a、b、c 必须是正数. (3)给a、b、c重新赋不同值,其结果如下: 请输入一个数a:6 a = 6 请输入一个数b:7 b = 7 请输入一个数c:15 c = 15 三角形不存在.,(4)再给a、b、c重新赋不同值,其结果如下: 请输入一个数a:3 a = 3 请输入一个数b:4 b = 4 请输入一个数c:5 c = 5 A = 6,6.8 综合实例学生的成绩管理,【例6-15】 若给出学生的姓名、考试分数,试编写MATLAB程序,判断优秀(90分以上)、良好(8089分)、中等(7079分)、及格(6069分)和不及格(60分以下)五个等级。 编写MATLAB程序如下: clear; for k=1:10 a(k)=89+k;b(k)=79+k;c(k)=69+k;d(k)=59+k; end A=cell(3,6); A(1,:)=YANG,WANG,LIU,SU

温馨提示

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

评论

0/150

提交评论