MATLAB程序设计函数文件和程序调试ppt课件

上传人:re****.1 文档编号:569237718 上传时间:2024-07-28 格式:PPT 页数:25 大小:134KB
返回 下载 相关 举报
MATLAB程序设计函数文件和程序调试ppt课件_第1页
第1页 / 共25页
MATLAB程序设计函数文件和程序调试ppt课件_第2页
第2页 / 共25页
MATLAB程序设计函数文件和程序调试ppt课件_第3页
第3页 / 共25页
MATLAB程序设计函数文件和程序调试ppt课件_第4页
第4页 / 共25页
MATLAB程序设计函数文件和程序调试ppt课件_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《MATLAB程序设计函数文件和程序调试ppt课件》由会员分享,可在线阅读,更多相关《MATLAB程序设计函数文件和程序调试ppt课件(25页珍藏版)》请在金锄头文库上搜索。

1、Hefei University of TechnologyInstitute of Sound and Vibration ResearchMATLAB 函数文件和程序调试函数文件和程序调试M文本文件介绍文本文件介绍 MATLAB编写的程序编写的程序文件文件称为称为M文件,文件,M文件有脚本文件和函数文件两种。文件有脚本文件和函数文件两种。 脚本文件(脚本文件( M-script )不需要输入参数,也不输出参数,按照文件中制定的顺序执行)不需要输入参数,也不输出参数,按照文件中制定的顺序执行命令命令序列。脚本文件适合于小规模运算。序列。脚本文件适合于小规模运算。 函数文件接受其他数据为输入参

2、数,并且可以返回数据。函数函数文件接受其他数据为输入参数,并且可以返回数据。函数是是MATLAB编程的主流编程的主流方法。方法。2脚本脚本M文件介绍文件介绍脚本脚本M文件通常仅仅由文件通常仅仅由M文件正文和注释部分构成。正文主要是实现功能,注释文件正文和注释部分构成。正文主要是实现功能,注释则是给出代码说明。则是给出代码说明。例:例: g=0: 0.5: 20; %产生产生 一维向量一维向量 x=sin(g); % 计算正弦值计算正弦值 y=cos(g); % 计算余弦值计算余弦值 z=x; y; 保存脚本文件时按照保存脚本文件时按照MATLAB标识符的要求起文件名标识符的要求起文件名 脚本文

3、件的运行有两种方式:脚本文件的运行有两种方式:1. 在命令窗口中键入文件名;在命令窗口中键入文件名; 2. 在在M文件编辑窗口点击文件编辑窗口点击Debug菜单的菜单的Run,或者使用快捷键,或者使用快捷键F5。3函数函数M文件介绍文件介绍 函数函数M文件由文件由function语句引导,格式为:语句引导,格式为: function 输出形参列表输出形参列表= 函数名(输入形参列表)函数名(输入形参列表) %注释说明部分(可选)注释说明部分(可选) 函数体语句函数体语句 (必须)(必须)注意:注意:1.第一行为引导行,表示该第一行为引导行,表示该M文件是函数文件文件是函数文件2.函数名的命名规

4、则与变量名相同函数名的命名规则与变量名相同( 必须以字母开头必须以字母开头)3.当输出形参多于一个时,用方括号括起来当输出形参多于一个时,用方括号括起来4.函数必须是一个单独的函数必须是一个单独的M文件文件, 函数文件名建议与函数名一致,通常为函数名函数文件名建议与函数名一致,通常为函数名.m,不一致不一致时以文件名为准。时以文件名为准。4函数函数M文件介绍文件介绍形参形参 全称为全称为“形式参数形式参数” 由于它不是实际存在变量,所以又称虚拟变量。形参是在定义函数的由于它不是实际存在变量,所以又称虚拟变量。形参是在定义函数的时候使用的参数时候使用的参数, ,目的是用来接收调用该函数时传入的参

5、数。目的是用来接收调用该函数时传入的参数。 形参也可以理解为函数的自变量,其初值来源于函数的调用。只有在程序执行过程中调形参也可以理解为函数的自变量,其初值来源于函数的调用。只有在程序执行过程中调用了函数,形参才有可能得到具体的值,并参与运算求得函数值。用了函数,形参才有可能得到具体的值,并参与运算求得函数值。 形参在整个函数体内都可以使用,形参在整个函数体内都可以使用, 离开该函数则不能使用。离开该函数则不能使用。5函数函数M文件介绍文件介绍%注释说明部分(可选)注释说明部分(可选) 第一注释行为大写的函数文件名和函数功能简要描述,供第一注释行为大写的函数文件名和函数功能简要描述,供look

6、for和和help使用使用 第一注释行之后为函数输入第一注释行之后为函数输入/输出参数的含义及调用格式说明等信息,构成全部在线帮助输出参数的含义及调用格式说明等信息,构成全部在线帮助文本文本 在线帮助文本后空一行在线帮助文本后空一行 空一行之后的注释行,包括文件编写和修改的信息,用于软件档案管理空一行之后的注释行,包括文件编写和修改的信息,用于软件档案管理6函数函数M文件举例文件举例 编写函数文件计算圆柱体的表面积和体积编写函数文件计算圆柱体的表面积和体积function s, v=colume (r, h) s=2*r*pi*h + 2*pi*r2; % calculate the surf

7、ace area v=pi*r2*h; % calculate the volume注意:注意:当函数具有多个输出变量时,则以方括号括起当函数具有多个输出变量时,则以方括号括起当函数不含输出变量时,则直接略去输出部分或采用空方括号表示。当函数不含输出变量时,则直接略去输出部分或采用空方括号表示。% r is the radius of the colume% h is the height of the colume 注释注释7函数的调用函数的调用 函数文件不能直接运行,要以函数调用的方式来调用,调用一般格式:函数文件不能直接运行,要以函数调用的方式来调用,调用一般格式: 实参必须有确定的值。

8、实参必须有确定的值。 函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。 函数调用时,实参的顺序和个数应与函数定义时的形参的顺序和个数一致。函数调用时,实参的顺序和个数应与函数定义时的形参的顺序和个数一致。 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。值反向地传送给实参。输出实参列表输出实参列表 = 函数名函数名(输入实参列表输入实参列表)8函数的调用函数的调用

9、例:例: s, v=colume (1, 1); 或者或者 r=1; h=1; s, v=colume (r, h);9函数变量函数变量 工作区工作区 MATLAB将每个变量保存在一块内存空间中,这个空间称为工作区。主工作区包括所有将每个变量保存在一块内存空间中,这个空间称为工作区。主工作区包括所有通过命令窗口创建的变量和脚本文件运行生成的变量。脚本文件没有独立的工作区,而通过命令窗口创建的变量和脚本文件运行生成的变量。脚本文件没有独立的工作区,而每个函数都拥有独立的工作区,将该函数的所有变量都保存在该独立的工作区中。每个函数都拥有独立的工作区,将该函数的所有变量都保存在该独立的工作区中。 根

10、据变量的作用工作区,函数变量主要分为以下两种:根据变量的作用工作区,函数变量主要分为以下两种: 局部变量局部变量 全局变量全局变量10函数变量函数变量局部变量局部变量局部变量:局部变量: 每个函数都有自己的局部变量,这些变量存储在该函数独立的工作区中,与其他函数的每个函数都有自己的局部变量,这些变量存储在该函数独立的工作区中,与其他函数的变量及主工作区中的变量分开存储。当函数调用结束时,这些变量随之删除,不保存在变量及主工作区中的变量分开存储。当函数调用结束时,这些变量随之删除,不保存在内存中。并且,除了函数返回值,该函数不改变工作区中其他变量的值。内存中。并且,除了函数返回值,该函数不改变工

11、作区中其他变量的值。 脚本文件没有独立的工作区,当通过命令窗口调用脚本文件时,脚本文件分享主工作区,脚本文件没有独立的工作区,当通过命令窗口调用脚本文件时,脚本文件分享主工作区,当函数调用脚本文件时,脚本文件分享主调函数的工作区。需要注意的是,如果脚本中当函数调用脚本文件时,脚本文件分享主调函数的工作区。需要注意的是,如果脚本中改变了工作区中变量的值,则在脚本文件调用结束后,该变量的值发生改变。改变了工作区中变量的值,则在脚本文件调用结束后,该变量的值发生改变。 在函数中,变量默认为局部变量。在函数中,变量默认为局部变量。11函数变量函数变量全局变量全局变量全局变量全局变量局部变量只在一个工作

12、区内有效,无论是函数工作区还是局部变量只在一个工作区内有效,无论是函数工作区还是 MATLAB 主工作区。与局部主工作区。与局部变量不同,全局变量可以在定义该变量在全部工作区中有效。当在一个工作区内改变该变量不同,全局变量可以在定义该变量在全部工作区中有效。当在一个工作区内改变该变量的值时,该变量在其他工作区中的变量同时改变。变量的值时,该变量在其他工作区中的变量同时改变。 任何函数如果需要使用全局变量,则必须首先声明,声明格式为:任何函数如果需要使用全局变量,则必须首先声明,声明格式为:global 变量名变量名1 变量名变量名2 变量名列表中的各个变量用空格隔开,不能用逗号!变量名列表中的

13、各个变量用空格隔开,不能用逗号!12函数变量函数变量全局变量全局变量 定义全局变量是定义全局变量是M文件间传递信息的一种手段。文件间传递信息的一种手段。 全局变量给函数间的数据传递带来了方便,但却破坏了函数对变量的封装,降低了程全局变量给函数间的数据传递带来了方便,但却破坏了函数对变量的封装,降低了程序的可读性,因而在结构化程序设计中,全局变量是不受欢迎的。特别是当程序较大,序的可读性,因而在结构化程序设计中,全局变量是不受欢迎的。特别是当程序较大,子程序较多时,全局变量将个程序调试和维护带来不便,故不提倡使用全局变量。子程序较多时,全局变量将个程序调试和维护带来不便,故不提倡使用全局变量。1

14、3函数类型函数类型 主函数主函数 子函数子函数 嵌套函数嵌套函数14函数类型函数类型主函数主函数 通常每个通常每个 M 文件中的第一个函数为主函数,主函数可以被该文件之外的其他函数调文件中的第一个函数为主函数,主函数可以被该文件之外的其他函数调用,而子函数只能被该文件内的函数调用。主函数的调用通过存储该函数的用,而子函数只能被该文件内的函数调用。主函数的调用通过存储该函数的 M 文件的文件的文件名调用。文件名调用。15函数类型函数类型子函数子函数 一个一个 M 文件中可以包括多个函数,除主函数之外的其他函数称为子函数。子函数只能文件中可以包括多个函数,除主函数之外的其他函数称为子函数。子函数只

15、能被主函数或该文件内的其他子函数调用。每个子函数以函数定义语句开头,直至下一个被主函数或该文件内的其他子函数调用。每个子函数以函数定义语句开头,直至下一个函数的定义或文件的结尾。函数的定义或文件的结尾。 16函数类型函数类型嵌套函数嵌套函数 一个函数内部可以定义其他的函数,这种内部的函数称作嵌套函数。一个函数内部可以定义其他的函数,这种内部的函数称作嵌套函数。 定义嵌套函数时,只要在一个函数内部直接定义即可。需要注意的是当一个定义嵌套函数时,只要在一个函数内部直接定义即可。需要注意的是当一个 M文件中存文件中存在嵌套函数时,该文件内的所有函数必须以在嵌套函数时,该文件内的所有函数必须以 end

16、 结尾。结尾。 例例 嵌套函数的结构嵌套函数的结构function x = A(p1, p2). function y = B(p3) . end.end17函数类型函数类型嵌套函数嵌套函数 每个函数中可以嵌套多个函数。每个函数中可以嵌套多个函数。 多个平行嵌套函数多个平行嵌套函数function x = A(p1, p2). function y = B(p3) . end function z = C(p4) . end.end18函数类型函数类型嵌套函数嵌套函数 多层嵌套函数多层嵌套函数function x = A(p1, p2). function y = B(p3) . functi

17、on z = C(p4) . end . end.end 在这段程序中,函数在这段程序中,函数 A 嵌套了函数嵌套了函数 B,函数,函数 B 嵌套了函数嵌套了函数 C。19函数类型函数类型嵌套函数的调用嵌套函数的调用 一个嵌套函数可以被下列函数调用:一个嵌套函数可以被下列函数调用:(1)该嵌套函数的上一层函数;)该嵌套函数的上一层函数;(2)同一母函数下的同级嵌套函数;)同一母函数下的同级嵌套函数;(3)被任一低级别的函数调用。)被任一低级别的函数调用。20函数句柄函数句柄利用函数句柄可以实现对函数的间接操作,可以通过将函数句柄传递给其他函数实现对利用函数句柄可以实现对函数的间接操作,可以通过

18、将函数句柄传递给其他函数实现对函数的操作,也可以将函数句柄保存在变量中,留待以后调用操作。函数的操作,也可以将函数句柄保存在变量中,留待以后调用操作。函数句柄是通过函数句柄是通过 符号创建的,格式为:符号创建的,格式为:fhandle = functionname。例:例:求解方程求解方程ex-x=0 function fx=equation (x)fx=exp(x)-3*x; fzero(equation, 1) ; fminbnd(equation, 0,1) ; 21程序的调试程序的调试应用程序的错误有两类应用程序的错误有两类 语法错误语法错误 包括词法或文法的错误,例如函数名的拼写错误

19、、表达式书写错误等。包括词法或文法的错误,例如函数名的拼写错误、表达式书写错误等。 MATLAB能检测出大多数该类错误,给出错误信息,并指出出错的位置。能检测出大多数该类错误,给出错误信息,并指出出错的位置。 运行时的错误运行时的错误 程序的运行结果有错误,这类错误也称为程序逻辑错误。程序的运行结果有错误,这类错误也称为程序逻辑错误。 MATLAB系统对程序逻辑错误无能为力系统对程序逻辑错误无能为力22程序的调试程序的调试对于逻辑错误,可采用调试手段来发现对于逻辑错误,可采用调试手段来发现将程序执行的中间结果输出到命令窗口,以方便检查;将程序执行的中间结果输出到命令窗口,以方便检查; 去掉分号

20、去掉分号 利用函数利用函数 disp 显示中间变量的值显示中间变量的值使用调试菜单(使用调试菜单(debug),通过图形界面操作实现程序调试,通过图形界面操作实现程序调试 单步运行单步运行 设置断点设置断点23MATLAB调试菜单调试菜单 MATLAB的的M文件编辑器中的文件编辑器中的Debug菜单提供了全部的调试选项。菜单提供了全部的调试选项。 选项选项功能功能对应快捷键对应快捷键Step下一步下一步F10Step In进入被调用函数内部进入被调用函数内部F11Step Out跳出当前函数跳出当前函数Shift+F11Continue执行,直至下一断点执行,直至下一断点F5Go until

21、Cursor执行至当前光标处执行至当前光标处无无Set/Clear Breakpoint设置或删除断点设置或删除断点F12Set/Modify Conditional Breakpoint设置或修改条件断点设置或修改条件断点无无Enable/Disable Breakpoint开启或关闭光标行的断点开启或关闭光标行的断点无无Clear Breakpoints in All Files删除所有文件中的断点删除所有文件中的断点无无Stop if Errors/Warings遇到错误或者警告时停止遇到错误或者警告时停止无无24程序的调试程序的调试举例举例 x=200; while x0 if mod(x,7)=0 continue; end x=x-1;l end25

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号