收藏 分销(赏)

MATLAB-程序设计——函数文件和程序调试.ppt

上传人:精**** 文档编号:10300668 上传时间:2025-05-20 格式:PPT 页数:25 大小:128.04KB
下载 相关 举报
MATLAB-程序设计——函数文件和程序调试.ppt_第1页
第1页 / 共25页
MATLAB-程序设计——函数文件和程序调试.ppt_第2页
第2页 / 共25页
点击查看更多>>
资源描述
Master title,Master text 1,Master text 2,Master text 3,Master text 4,*,MATLAB,程序设计,函数文件和程序调试,M,文本文件介绍,MATLAB,编写的程序,文件,称为,M,文件,,M,文件有脚本文件和函数文件两种。,脚本文件(,M-script,)不需要输入参数,也不输出参数,按照文件中制定的顺序执行命令,序列。脚本文件适合于小规模运算。,函数文件接受其他数据为输入参数,并且可以返回数据。函数,是,MATLAB,编程的主流方法。,2,脚本,M,文件介绍,脚本,M,文件通常仅仅由,M,文件正文和注释部分构成。正文主要是实现功能,注释则是给出代码说明。,例:,g=0:0.5:20;%,产生 一维向量,x=sin(g);%,计算正弦值,y=cos(g);%,计算余弦值,z=x;y;,保存脚本文件时按照,MATLAB,标识符的要求起文件名,脚本文件的运行有两种方式:,1.,在命令窗口中键入文件名;,2.,在,M,文件编辑窗口点击,Debug,菜单的,Run,,或者使用快捷键,F5,。,3,函数,M,文件介绍,函数,M,文件由,function,语句引导,格式为:,function,输出,形参,列表,=,函数名,(输入,形参,列表),%,注释说明部分(可选),函数体语句,(必须),注意:,第一行为引导行,表示该,M,文件是函数文件,函数名的命名规则与变量名相同,(,必须以字母开头,),当输出形参多于一个时,用方括号括起来,函数必须是一个单独的,M,文件,函数文件名建议与函数名一致,通常为函数名,.m,不一致时以文件名为准。,4,函数,M,文件介绍,形参,全称为,“,形式参数,”,由于它不是实际存在变量,所以又称虚拟变量。形参是在定义函数的时候使用的参数,目的是用来接收调用该函数时传入的参数。,形参也可以理解为函数的自变量,其初值来源于函数的调用。只有在程序执行过程中调用了函数,形参才有可能得到具体的值,并参与运算求得函数值。,形参在整个函数体内都可以使用,离开该函数则不能使用。,5,函数,M,文件介绍,%,注释说明部分(可选),第一注释行为大写的函数文件名和函数功能简要描述,供,lookfor,和,help,使用,第一注释行之后为函数输入,/,输出参数的含义及调用格式说明等信息,构成全部在线帮助文本,在线帮助文本后空一行,空一行之后的注释行,包括文件编写和修改的信息,用于软件档案管理,6,函数,M,文件举例,编写函数文件计算圆柱体的表面积和体积,function,s,v=colume(r,h),s=2*r*pi*h+2*pi*r2;%calculate the surface area,v=pi*r2*h;%calculate the volume,注意:,当函数具有多个输出变量时,则以方括号括起,当函数不含输出变量时,则直接略去输出部分或采用空方括号表示。,%r is the radius of the colume,%h is the height of the colume,注释,7,函数的调用,函数文件不能直接运行,要以函数调用的方式来调用,调用一般格式:,实参必须有确定的值。,函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。,函数调用时,实参的顺序和个数应与函数定义时的形参的顺序和个数一致。,函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。,输出,实参,列表,=,函数名,(,输入,实参,列表,),8,函数的调用,例:,s,v=colume(1,1),;,或者,r=1;,h=1;,s,v=colume(r,h);,9,函数变量,工作区,MATLAB,将每个变量保存在一块内存空间中,这个空间称为工作区。主工作区包括所有通过命令窗口创建的变量和脚本文件运行生成的变量。脚本文件没有独立的工作区,而每个函数都拥有独立的工作区,将该函数的所有变量都保存在该独立的工作区中。,根据变量的作用工作区,函数变量主要分为以下两种:,局部变量,全局变量,10,函数变量,局部变量,局部变量:,每个函数都有自己的局部变量,这些变量存储在该函数独立的工作区中,与其他函数的变量及主工作区中的变量分开存储。当函数调用结束时,这些变量随之删除,不保存在内存中。并且,除了函数返回值,该函数不改变工作区中其他变量的值。,脚本文件没有独立的工作区,当通过命令窗口调用脚本文件时,脚本文件分享主工作区,当函数调用脚本文件时,脚本文件分享主调函数的工作区。需要注意的是,如果脚本中改变了工作区中变量的值,则在脚本文件调用结束后,该变量的值发生改变。,在函数中,变量默认为局部变量。,11,函数变量,全局变量,全局变量,局部变量只在一个工作区内有效,无论是函数工作区还是,MATLAB,主工作区。与局部变量不同,全局变量可以在定义该变量在全部工作区中有效。当在一个工作区内改变该变量的值时,该变量在其他工作区中的变量同时改变。,任何函数如果需要使用全局变量,则必须首先声明,声明格式为:,global,变量名,1,变量名,2,变量名列表中的各个变量用,空格,隔开,不能用逗号!,12,函数变量,全局变量,定义全局变量是,M,文件间传递信息的一种手段。,全局变量给函数间的数据传递带来了方便,但却破坏了函数对变量的封装,降低了程序的可读性,因而,在结构化程序设计中,全局变量是不受欢迎的,。特别是当程序较大,子程序较多时,全局变量将个程序调试和维护带来不便,故不提倡使用全局变量。,13,函数类型,主函数,子函数,嵌套函数,14,函数类型,主函数,通常每个,M,文件中的第一个函数为主函数,主函数可以被该文件之外的其他函数调用,而子函数只能被该文件内的函数调用。主函数的调用通过存储该函数的,M,文件的文件名调用。,15,函数类型,子函数,一个,M,文件中可以包括多个函数,除主函数之外的其他函数称为子函数。子函数只能被主函数或该文件内的其他子函数调用。每个子函数以函数定义语句开头,直至下一个函数的定义或文件的结尾。,16,函数类型,嵌套函数,一个函数内部可以定义其他的函数,这种内部的函数称作嵌套函数。,定义嵌套函数时,只要在一个函数内部直接定义即可。需要注意的是当一个,M,文件中存在嵌套函数时,该文件内的所有函数必须以,end,结尾。,例 嵌套函数的结构,function x=A(p1,p2),.,function y=B(p3),.,end,.,end,17,函数类型,嵌套函数,每个函数中可以嵌套多个函数。,多个平行嵌套函数,function x=A(p1,p2),.,function y=B(p3),.,end,function z=C(p4),.,end,.,end,18,函数类型,嵌套函数,多层嵌套函数,function x=A(p1,p2),.,function y=B(p3),.,function z=C(p4),.,end,.,end,.,end,在这段程序中,函数,A,嵌套了函数,B,,函数,B,嵌套了函数,C,。,19,函数类型,嵌套函数的调用,一个嵌套函数可以被下列函数调用:,(,1,)该嵌套函数的上一层函数;,(,2,)同一母函数下的同级嵌套函数;,(,3,)被任一低级别的函数调用。,20,函数句柄,利用函数句柄可以实现对函数的间接操作,可以通过将函数句柄传递给其他函数实现对函数的操作,也可以将函数句柄保存在变量中,留待以后调用操作。,函数句柄是通过,符号创建的,格式为:,fhandle=functionname,。,例:,求解方程,e,x,-,x=,0,function,fx=equation(x),fx=exp(x)-3*x;,fzero(equation,1),;,fminbnd(equation,0,,,1),;,21,程序的调试,应用程序的错误有两类,语法错误,包括词法或文法的错误,例如函数名的拼写错误、表达式书写错误等。,MATLAB,能检测出大多数该类错误,给出错误信息,并指出出错的位置。,运行时的错误,程序的运行结果有错误,这类错误也称为程序逻辑错误。,MATLAB,系统对程序逻辑错误无能为力,22,程序的调试,对于逻辑错误,可采用调试手段来发现,将程序执行的中间结果输出到命令窗口,以方便检查;,去掉分号,利用函数,disp,显示中间变量的值,使用调试菜单(,debug),,通过图形界面操作实现程序调试,单步运行,设置断点,23,MATLAB,调试菜单,MATLAB的M文件编辑器中的Debug菜单提供了全部的调试选项。,选项,功能,对应快捷键,Step,下一步,F10,Step In,进入被调用函数内部,F11,Step Out,跳出当前函数,Shift+F11,Continue,执行,直至下一断点,F5,Go until Cursor,执行至当前光标处,无,Set/Clear Breakpoint,设置或删除断点,F12,Set/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;,end,25,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服