《03 程序设计.ppt》由会员分享,可在线阅读,更多相关《03 程序设计.ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、使用使用MATLAB语言编写的程序称为语言编写的程序称为M文件,其文件扩展名文件,其文件扩展名均为均为“.m”。它可分为。它可分为脚本脚本(Scripts)文件文件和和函数函数(Function)文文件件。第三章第三章 MATLAB程序设计程序设计MATLAB工作模式工作模式一、一、M文件文件指令驱动模式:指令驱动模式:在命令窗口下输入指令,在命令窗口下输入指令,MATLAB立即处理立即处理这些指令,并显示结果。这些指令,并显示结果。M文件模式:文件模式:将将MATLAB语句构成的程序存储成以语句构成的程序存储成以m为扩展为扩展名的文件,然后再执行该程序文件。名的文件,然后再执行该程序文件。1
2、1、M文件的建立:文件的建立:菜单操作:菜单操作:MATLAB命令窗口的命令窗口的File菜单菜单 New菜单项菜单项 M-file命令。命令。命令操作:在命令操作:在MATLAB命令窗口输入命令命令窗口输入命令edit。命令按钮操作:单击命令按钮操作:单击MATLAB命令窗口工具栏上的命令窗口工具栏上的“新建新建”命令按钮。命令按钮。二、二、M文件的创建与编辑文件的创建与编辑编辑器通常用颜色来区分程序内容的类别:编辑器通常用颜色来区分程序内容的类别:u黑色黑色程序主体部分;程序主体部分;u绿色绿色注释部分;注释部分;u紫色紫色属性值设定或标识部分;属性值设定或标识部分;u蓝色蓝色控制流程,比
3、如控制流程,比如for,ifthen等语句。等语句。22、M文件的打开:文件的打开:菜单操作:菜单操作:MATLAB命令窗口的命令窗口的File菜单菜单 Open菜单项菜单项 选择所需打开的选择所需打开的M文件。在文档窗口可以对打开的文件。在文档窗口可以对打开的M文件进文件进行编辑修改。行编辑修改。命令操作:在命令操作:在MATLAB命令窗口输入命令命令窗口输入命令edit+文件名,则文件名,则可打开指定的可打开指定的M文件。文件。命令按钮操作:单击命令按钮操作:单击MATLAB命令窗口工具栏上的命令窗口工具栏上的“Open files”命令按钮,再从弹出的对话框中选择所需打开的文件。命令按钮
4、,再从弹出的对话框中选择所需打开的文件。注意:注意:所创建的所创建的m文件必须纳入文件必须纳入matlab搜索路径后,才搜索路径后,才能在能在matlab命令窗口运行。命令窗口运行。3脚本文件脚本文件是由实现某项功能的一系列语句命令与函数组合是由实现某项功能的一系列语句命令与函数组合成的成的M文件,也称为命令文件。脚本文件没有输入参数,也文件,也称为命令文件。脚本文件没有输入参数,也没有输出参数。执行脚本文件时,文件中的指令或者命令按没有输出参数。执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。照出现在脚本文件中的顺序依次执行。三、脚本文件三、脚本文件脚本文件主要由注释
5、行和代码行组成。脚本文件主要由注释行和代码行组成。注释行需要使用注释行需要使用%定义定义符;代码行则是一些简单的符;代码行则是一些简单的MATLAB指令或命令,命令可以完指令或命令,命令可以完成相应的计算处理数据、绘制图形结果的操作,可以在脚本文件成相应的计算处理数据、绘制图形结果的操作,可以在脚本文件中调用其他的函数完成复杂的数学运算。中调用其他的函数完成复杂的数学运算。4四、函数文件四、函数文件特定规则:特定规则:函数函数m文件首行必须以关键字文件首行必须以关键字function开头,如果返回变量开头,如果返回变量只有一个,方括号可以省略。如果函数有多个输入或返回变只有一个,方括号可以省略
6、。如果函数有多个输入或返回变量,则多个变量之间用量,则多个变量之间用英文状态下英文状态下的逗号加以分隔。的逗号加以分隔。函数名的命名规则与变量的命名规则相同。函数名的命名规则与变量的命名规则相同。m文件的文件名最好是文件的文件名最好是.m。函数文件的格式:函数文件的格式:function 返回变量返回变量=函数名(输入变量)函数名(输入变量)%注释说明语句段注释说明语句段 程序语句段程序语句段 end5例例:编写函数文件求编写函数文件求x的阶乘。的阶乘。%计算计算x的阶乘的函数的阶乘的函数function p=jc(x)p=1;for i=1:x p=p*i;endend脚本文件中的所有变量都
7、是全局变量,而函脚本文件中的所有变量都是全局变量,而函数文件中的变量却是局部变量,只在函数运数文件中的变量却是局部变量,只在函数运行期间有效,函数返回后,局部变量会自动行期间有效,函数返回后,局部变量会自动在工作空间中消除掉。在工作空间中消除掉。函数调用的一般格式为:函数调用的一般格式为:输出变量输出变量=函数名(输入变量)函数名(输入变量)调用函数前,必须先进入该函数所在的目录调用函数前,必须先进入该函数所在的目录或用命令标出函数所在的位置。或用命令标出函数所在的位置。6五、流程控制五、流程控制 matlab语言的程序结构与其它高级语言一样,分为顺序,语言的程序结构与其它高级语言一样,分为顺
8、序,循环和选择三大基本结构。循环和选择三大基本结构。顺序结构顺序结构 按照从上至下的顺序依次执行程序的各条语句。按照从上至下的顺序依次执行程序的各条语句。循环结构循环结构 就是在程序中某一条语句或多条语句重复多次就是在程序中某一条语句或多条语句重复多次的运行。的运行。选择结构选择结构 依照不同的判断条件进行判断,然后根据判断依照不同的判断条件进行判断,然后根据判断的结果选择某一种方法来解决某一个问题。的结果选择某一种方法来解决某一个问题。71、循环语句、循环语句MATLAB中有两种循环语句:中有两种循环语句:forend 语句和语句和whileend语句。语句。forend:用于循环次数已经确
9、定的情况,其调用格式为:用于循环次数已经确定的情况,其调用格式为:for 循环变量循环变量=表达式表达式1:表达式表达式2:表达式表达式3 循环体语句循环体语句end%其中表达式其中表达式1的值为循环变量的初值,表达式的值为循环变量的初值,表达式2的值为步长,表达的值为步长,表达式式3的值为循环变量的终值。步长为的值为循环变量的终值。步长为1时,表达式时,表达式2可以省略。对于可以省略。对于正的步长,当变量大于表达式正的步长,当变量大于表达式3时结束循环,对于负的步长,当变时结束循环,对于负的步长,当变量小于表达式量小于表达式3时结束循环。时结束循环。8whileend:用于循环次数不确定的情
10、况,其调用格式为:用于循环次数不确定的情况,其调用格式为:while 条件表达式条件表达式 循环体语句循环体语句endsum=0;i=1;while i=2 y=x+(x-2);elseif x=0 y=x-(x-2);else y=-x-(x-2);enddisp(y);例:例:计算函数计算函数 的值。的值。12switch 开关表达式开关表达式case 表达式表达式1 语句组语句组1case 表达式表达式2 语句组语句组2otherwise 语句组语句组nend%当开关表达式的值等于当开关表达式的值等于case语句后的语句后的条件时,程序转移到该语句去执行,执条件时,程序转移到该语句去执行
11、,执行完后直接跳出开关体,执行行完后直接跳出开关体,执行end后的后的语句。程序的执行结果与各个语句。程序的执行结果与各个case的语的语句次序无关。当句次序无关。当case后所有表达式都不后所有表达式都不等于开关表达式时,程序将执行等于开关表达式时,程序将执行otherwise后的语句组。后的语句组。3、开关语句、开关语句13例:例:根据变量根据变量 num 的值来决定显示的内容。的值来决定显示的内容。num=input(请输入一个数请输入一个数);switch num case-1 disp(I am a teacher.);case 0 disp(I am a student.);cas
12、e 1 disp(You are a teacher.);otherwise disp(You are a student.);end144、流程控制语句、流程控制语句break:用来终止当前循环。可以中断:用来终止当前循环。可以中断for语句,也可以中语句,也可以中断断while语句。循环体内设置的条件必须在语句。循环体内设置的条件必须在break指令之前。指令之前。对于嵌套的循环结构,对于嵌套的循环结构,break指令只能退出包含它的最内指令只能退出包含它的最内层循环。层循环。continue指令:用来中断本次的循环体,将程序的流程跳指令:用来中断本次的循环体,将程序的流程跳转到判断循环条
13、件的语句处,继续下一次的循环。转到判断循环条件的语句处,继续下一次的循环。return指令:用来终止本次函数调用,返回到上级调用函指令:用来终止本次函数调用,返回到上级调用函数。数。return指令既可以用在循环体内,也可用在非循环体指令既可以用在循环体内,也可用在非循环体内。内。15六、六、M文件调试文件调试应用程序的错误有两类:一类是语法错误;另一类是逻辑应用程序的错误有两类:一类是语法错误;另一类是逻辑错误,指程序运行过程中得到的结果不是用户需要的结果。错误,指程序运行过程中得到的结果不是用户需要的结果。与调试与调试(Debug)有关的菜单项及按钮:有关的菜单项及按钮:Set/Clear
14、 Breakpoint:设置:设置/清除光标处的断点;清除光标处的断点;Clear All Breakpoint:清除程序中的所有断点;:清除程序中的所有断点;Stop if Error/Warning:运行至:运行至结束结束(自动断点自动断点);Run:执行程序至结束遇到断点;:执行程序至结束遇到断点;step:单步执行程序;:单步执行程序;Step In:深入下层局部工作区;:深入下层局部工作区;Continue:恢复程序运行至结束或另一个断点。:恢复程序运行至结束或另一个断点。1、调试器的使用、调试器的使用16应用与调试应用与调试M文件的指令文件的指令指令指令说明说明dbclear清除已
15、经设置好的断点清除已经设置好的断点dbcont在断点后继续执行,等同于工具栏中的在断点后继续执行,等同于工具栏中的 按钮按钮dbdown/dbup修改当前工作空间的上、下文关系修改当前工作空间的上、下文关系dbquit退出调试状态退出调试状态dbstack显示谁调用谁显示谁调用谁dbstatus显示所有的已经设置的断点显示所有的已经设置的断点dbstep执行应用程序的一行或者多行代码执行应用程序的一行或者多行代码dbstop设置断点设置断点dbtype显示显示M文件代码和相应的行号文件代码和相应的行号2、调试命令、调试命令17dbstop:设置断点;调用格式有:设置断点;调用格式有:dbsto
16、p at in:在指定文件的指定行处设置断点;:在指定文件的指定行处设置断点;dbstop in:在指定文件的第一个可执行处设置断点;:在指定文件的第一个可执行处设置断点;dbstop if error:在任何运行出错时产生中断(不包括语法错误)。出错中断后在任何运行出错时产生中断(不包括语法错误)。出错中断后用户不能恢复程序;用户不能恢复程序;dbstop if naninf/infnan:当出现:当出现Inf或或nan值时产生中断。值时产生中断。dbcont:用来恢复对于执行:用来恢复对于执行dbstop指令而导致中断的程序。一指令而导致中断的程序。一旦遇到其它已设置的断点或出现错误,就返
17、回基本工作空间;旦遇到其它已设置的断点或出现错误,就返回基本工作空间;dbstep:用于执行一行或多行代码。在调试模式下,:用于执行一行或多行代码。在调试模式下,dbstep允许允许用户实现逐行跟踪;用户实现逐行跟踪;dbstack:列出调用关系。在调试模式下,此指令显示当前的文:列出调用关系。在调试模式下,此指令显示当前的文件名及中断点的行号,其调用者的、调用者的调用者的件名及中断点的行号,其调用者的、调用者的调用者的文件文件名和断点行号,直到最外层的文件。名和断点行号,直到最外层的文件。dbstatus:用来列出全部断点。:用来列出全部断点。dbstatus(filename)可旬出指)可
18、旬出指定文件的全部断点。定文件的全部断点。18dbtype:用来显示带行号的文件内容,以协助用户设置断点,:用来显示带行号的文件内容,以协助用户设置断点,它有两种格式:它有两种格式:dbtype(文件名文件名):列出指定文件的全部内:列出指定文件的全部内容,每行前带行号;容,每行前带行号;dbtype :列出指定文件自起始行号到末行行号部分的内容。:列出指定文件自起始行号到末行行号部分的内容。dbquit:用来退出调试模式,将控制转向基本工作空间。此:用来退出调试模式,将控制转向基本工作空间。此时,文件执行还没有完成,也不产生返回结果。时,文件执行还没有完成,也不产生返回结果。常用警示信息:常用警示信息:error:显示预先设置的错误信息,程序停止运行;:显示预先设置的错误信息,程序停止运行;warning:显示预先设置的警告信息,程序继续运行;:显示预先设置的警告信息,程序继续运行;lasterr:显示:显示MATLAB自动判断的最新出错原因并终止程序自动判断的最新出错原因并终止程序运行;运行;lastwarn:显示:显示MATLAB自动给出的最新警告提示,程序继自动给出的最新警告提示,程序继续运行。续运行。19