《MATLAB高级程序设计.ppt》由会员分享,可在线阅读,更多相关《MATLAB高级程序设计.ppt(78页珍藏版)》请在第壹文秘上搜索。
1、数学实验数学实验2023年3月16日第1页教学目标l熟悉熟悉 MATLAB 的编程环境的编程环境l掌握掌握 MATLAB 的变量类型的变量类型l掌握掌握 MATLAB 中的流程控制语句中的流程控制语句l掌握掌握 MATLAB 的函数类型和函数操作的函数类型和函数操作l了解了解 MATLAB 中的错误处理中的错误处理l了解了解 MATLAB 程序调试方法程序调试方法l了解了解 MATLAB 代码优化方法代码优化方法数学实验数学实验2023年3月16日第2页教学重点lMATLAB 的编程环境的编程环境lMATLAB 的变量类型的变量类型lMATLAB 中的流程控制语句中的流程控制语句lMATLAB
2、 的函数类型和函数操作的函数类型和函数操作l MATLAB 程序调试方法程序调试方法数学实验数学实验2023年3月16日第3页教学内容lM文本文件介绍文本文件介绍 l函数流程控制函数流程控制 l函数变量函数变量 l函数类型函数类型 l函数操作函数操作 lMATLAB 编程错误处理编程错误处理 l程序设计的辅助函数程序设计的辅助函数 l调试程序调试程序 l优化程序优化程序 数学实验数学实验2023年3月16日第4页M文本文件介绍文本文件介绍l一个一个 M 文件通常包含五个部分,函数定义语句、文件通常包含五个部分,函数定义语句、H1 帮助帮助行、帮助文本、函数体或者脚本文件语句和注释语句。行、帮助
3、文本、函数体或者脚本文件语句和注释语句。H1 行为紧随函数定义语句后面的一行注释语句。当用户行为紧随函数定义语句后面的一行注释语句。当用户通过通过 help 命令查询该函数的说明信息时命令查询该函数的说明信息时 H1 行显示为第行显示为第一行,另外一行,另外 lookfor 函数只检索和显示函数只检索和显示 H1 行。帮助文本行。帮助文本为为 H1 行后面连续的注释行,当在命令窗口中通过行后面连续的注释行,当在命令窗口中通过 help 命令查询该函数的说明信息时则在窗口中显示这些内容。命令查询该函数的说明信息时则在窗口中显示这些内容。函数体为函数体为 M 文件的主要部分,是函数的执行代码。除上
4、文件的主要部分,是函数的执行代码。除上面的面的 H1 行和帮助文本外,为了易于理解,可以在书写代行和帮助文本外,为了易于理解,可以在书写代码时添加注释语句。这些注释语句在编译程序时会被忽略,码时添加注释语句。这些注释语句在编译程序时会被忽略,因此不会影响编译速度和程序运行速度,但是能够增加程因此不会影响编译速度和程序运行速度,但是能够增加程序的可读性。序的可读性。数学实验数学实验2023年3月16日第5页l一个完整的一个完整的 M 文件的结构为:文件的结构为:function f = fact(n) 函数定义语句函数定义语句% Compute a factorial value. H1 行行%
5、 FACT(N) returns the factorial of N, 帮助文本帮助文本% usually denoted by N!% Put simply, FACT(N) is PROD(1:N). 注释语句注释语句f = prod(1:n); 函数体函数体l函数定义语句只在函数文件中存在,定义函数名函数定义语句只在函数文件中存在,定义函数名称、输入输出参数的数量和顺序。函数定义语句称、输入输出参数的数量和顺序。函数定义语句的格式为:的格式为:function y = fact(x)。数学实验数学实验2023年3月16日第6页l函数式函数式M文件文件 l函数式函数式 M 文件比脚本式文
6、件比脚本式 M 文件相对复杂一些,脚本文件文件相对复杂一些,脚本文件不需要自带参数,也不一定返回结果,而函数文件一般要不需要自带参数,也不一定返回结果,而函数文件一般要自带参数,并且有返回结果,以便于更好的把整个程序连自带参数,并且有返回结果,以便于更好的把整个程序连为一段。函数文件也可以不带参数,此时文件中一般使用为一段。函数文件也可以不带参数,此时文件中一般使用一些全局变量来实现与外界和其他函数之间的数据交换。一些全局变量来实现与外界和其他函数之间的数据交换。l函数文件的第一行以函数文件的第一行以 function 开始,说明此文件是一个开始,说明此文件是一个函数。其实质为用户向函数。其实
7、质为用户向 MATLAB 函数库中添加的子函数。函数库中添加的子函数。在默认情况下,函数文件中的变量都是局部变量,仅在函在默认情况下,函数文件中的变量都是局部变量,仅在函数运行期间有效,函数运行结束后,这些变量将从工作区数运行期间有效,函数运行结束后,这些变量将从工作区中清除。中清除。数学实验数学实验2023年3月16日第7页 函数流程控制函数流程控制 l顺序结构顺序结构 l判断语句(判断语句(ifelseend) l分支语句分支语句 l循环语句循环语句 ltrycatchend语句语句 l其他流程控制函数其他流程控制函数 数学实验数学实验2023年3月16日第8页顺序结构顺序结构 l顺序结构
8、是最简单的程序结构,系统在编顺序结构是最简单的程序结构,系统在编译程序时,按照程序的物理位置顺序执行。译程序时,按照程序的物理位置顺序执行。这种程序容易编制,但是结构单一,能够这种程序容易编制,但是结构单一,能够实现的功能有限。实现的功能有限。 数学实验数学实验2023年3月16日第9页判断语句(判断语句(ifelseend) lifendlifelseendlifelseifelseend数学实验数学实验2023年3月16日第10页lifend l此时的程序结构如下:此时的程序结构如下:if 表达式表达式 执行代码块执行代码块endl这是最简单的判断语句,只有一个判断语句,其这是最简单的判断
9、语句,只有一个判断语句,其中的表达式为逻辑表达式,当表达式为真时,执中的表达式为逻辑表达式,当表达式为真时,执行相应的语句,否则,直接跳到下一段语句。行相应的语句,否则,直接跳到下一段语句。 数学实验数学实验2023年3月16日第11页lifelseend l当程序有两个选择时,可以选择当程序有两个选择时,可以选择 ifelseend 结构,此时程序结构为:结构,此时程序结构为:if 表达式表达式 执行代码块执行代码块1else 执行代码块执行代码块2endl当判断表达式为真时,执行代码块当判断表达式为真时,执行代码块1,否则执行,否则执行代码块代码块2。数学实验数学实验2023年3月16日第
10、12页lifelseifelseend l上面的两种形式中,分别包含一个选择和两个选择,当判断包含多个上面的两种形式中,分别包含一个选择和两个选择,当判断包含多个选择时,可以采用选择时,可以采用elseif 语句,结构为:语句,结构为:if 表达式表达式1 执行代码块执行代码块1elseif 表达式表达式2 执行代码块执行代码块2elseif .else 执行代码块执行代码块endl其中可以包含任意多个其中可以包含任意多个 elseif 语句。语句。 数学实验数学实验2023年3月16日第13页 分支语句分支语句 l上一节中的上一节中的 ifelseifelseend 语句可以适用于多种语句可
11、以适用于多种选择的流程控制,此时对选择的流程控制,此时对 else之外的每一个选择语句设之外的每一个选择语句设置一个表达式,表达式为真时则执行该模块。置一个表达式,表达式为真时则执行该模块。MATLAB 中的另一种多选择语句为分支语句。分支语句的结构为:中的另一种多选择语句为分支语句。分支语句的结构为:switch 分支语句分支语句 case 条件语句条件语句 执行代码块执行代码块 case 条件语句条件语句1, 条件语句条件语句2, 条件语句条件语句3, . 执行代码块执行代码块 otherwise 执行代码块执行代码块end数学实验数学实验2023年3月16日第14页l其中的分支语句为一个
12、变量,可以是数值变量或其中的分支语句为一个变量,可以是数值变量或者字符串变量,如果该变量的值与某一条件相符,者字符串变量,如果该变量的值与某一条件相符,则执行相应的语句,否则,执行则执行相应的语句,否则,执行 otherwise 后面后面的语句。在每一个条件中,可以包含一个条件语的语句。在每一个条件中,可以包含一个条件语句,可以包含多个条件,当包含多个条件时,将句,可以包含多个条件,当包含多个条件时,将条件以单元数组的形式表示。条件以单元数组的形式表示。lMATLAB 的分支语句类似于的分支语句类似于 C 语言的分支语句,语言的分支语句,但是又不完全相同:但是又不完全相同:MATLAB 语句从
13、上到下依次语句从上到下依次判断条件,条件符合则执行相应的代码块,之后判断条件,条件符合则执行相应的代码块,之后退出该分支语句,因此在代码块后面不需要添加退出该分支语句,因此在代码块后面不需要添加“break”语句。语句。数学实验数学实验2023年3月16日第15页循环语句循环语句 lfor 语句语句lwhile 语句语句数学实验数学实验2023年3月16日第16页1for 语句语句lfor 语句将相同的代码执行预定义的次数。语句将相同的代码执行预定义的次数。for 语句的结构为:语句的结构为:for 循环变量循环变量 = 表达式表达式 执行代码块执行代码块 endlfor 循环的语句在前面的例
14、子中已经有所涉循环的语句在前面的例子中已经有所涉及,上节的例子中,第二个程序中也涉及及,上节的例子中,第二个程序中也涉及到了到了 for 循环语句。下面为循环语句。下面为 for 循环的更多循环的更多例子。例子。数学实验数学实验2023年3月16日第17页2while 语句语句lwhile 语句用于将相同的代码块执行多次,语句用于将相同的代码块执行多次,但是次数并不预先指定,当但是次数并不预先指定,当 while 的条件的条件表达式为真时,执行代码块,直到条件表表达式为真时,执行代码块,直到条件表达式为假。达式为假。while 语句的结构为:语句的结构为:while 表达式表达式 执行代码块执
15、行代码块end 数学实验数学实验2023年3月16日第18页6.2.5 trycatchend语句语句lMATLAB 中的另一种判断语句为中的另一种判断语句为 trycatch 语句,这种语句可以包语句,这种语句可以包容程序运行中的错误,并返回错误类型。这种语句的结构为:容程序运行中的错误,并返回错误类型。这种语句的结构为:try 运行代码块运行代码块catch运行代码块运行代码块endl该语句首先从上到下依次执行,如果遇到程序错误则运行下一个该语句首先从上到下依次执行,如果遇到程序错误则运行下一个 catch 中的语句,依次向下进行。如果程序运行成功,则退出该判断中的语句,依次向下进行。如果
16、程序运行成功,则退出该判断语句。如果在语句。如果在 catch 和和 end之间的程序运行出错,则程序运行终止,之间的程序运行出错,则程序运行终止,或者如果存在其他的或者如果存在其他的 trycatch 结构,则运行下一个结构,则运行下一个 trycatch 结结构。可以利用构。可以利用 lasterr 命令查看发生错误的原因。命令查看发生错误的原因。数学实验数学实验2023年3月16日第19页6.2.6 其他流程控制函数其他流程控制函数lcontinue:continue 语句通常用在循环控制中,语句通常用在循环控制中,包括包括 for 循环和循环和 while 循环,用于结束当次循环,循环,用于结束当次循环,继续执行下一次循环,但是不结束当前循环。一继续执行下一次循环,但是不结束当前循环。一般般 continue 语句与语句与 if 语句相结合,当满足一定语句相结合,当满足一定的条件时,执行的条件时,执行 continue 语句。语句。lbreak:与:与 continue 相同的是,相同的是,break 函数也是函数也是用于循环控制,中断当前循环。与用于循环控制,中断当前循环。与