MATLAB及其在理工课程中的应用-5_第1页
MATLAB及其在理工课程中的应用-5_第2页
MATLAB及其在理工课程中的应用-5_第3页
MATLAB及其在理工课程中的应用-5_第4页
MATLAB及其在理工课程中的应用-5_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

M文件和函数句柄,7.1M文本编辑器,MATLABEditor/Debugger是一个集编辑与调试功能于一体的工具环境。创建新M文件的三种方法在MATLAB指令窗运行指令edit;点击MATLAB指令窗工具条上的利用MATLAB指令窗的File:New子菜单打开已有M文件的方法在MATLAB指令窗运行指令editfilename点击MATLAB指令窗工具条上的利用MATLAB指令窗的File:Open子菜单,7.2MATLAB控制流,for循环结构forx=array%x称为循环变量(command)%循环体end循环结构可以嵌套使用;为了得到高效代码,应尽量提高代码的向量化程度,避免使用循环结构;在循环指令之前应尽量对数组进行预定义;由于i和j是预定义变量,作“虚单位”使用,所以尽量避免把i和j用作循环变量;例题exm7.2-1,7.2MATLAB控制流,while循环结构whileexpression(commands)end当MATLAB碰到while指令时,首先检测expression的值,若其值为逻辑真,则执行组命令。与for循环的区别:while循环结构的循环体被执行的次数不是确定的,而for循环结构的循环体的执行次数是确定的。while指令后的表达式为空数组,则表达式值为假,而不执行循环体。例题exm7.2-2,7.2MATLAB控制流,if-else-end分支结构ifexpressionifexpression(commands)(commands1)endelse(commands2)endif指令判决和break指令的配合使用,可以强制终止for循环或while循环。例题exm7.2-3,7.2-4,7.2MATLAB控制流,switch-case结构switchex*ex为一标量或字符串casetest1(commands1)*当ex等于test1时,执行组命令1,casetest2*然后跳出该结构。casetestk*当ex等于testk时,执行组命令k(commandsk)*然后跳出该结构。otherwise*otherwise指令可以不存在(commands)*表达式不等于前面所有检测值时*执行该组命令。例题exm,7.2MATLAB控制流,try-catch结构try(commands1)*组命令1总被执行。若正确,则跳出该结构catch(commands2)*仅当组命令1出现执行错误时,2才被执行end可调用lasterr函数查询出错原因。若lasterr的运行结果为一个空串,则表明组命令1被成功执行了。当执行组命令2时又出错,MATLAB将终止该结构。例题exm,7.2MATLAB控制流,控制程序流的其他常用指令v=input(message),v=input(message,s)该指令执行时,“控制权”交给键盘。Message是提示用的字符串。keyboard用户从键盘输入M指令,遇return返回程序。break令循环终止或令程序中断continue跳过位于其后的循环中的其他指令,执行下一迭代pause,pause(n)程序暂停执行(n秒)error(message)显示出错信息message,终止程序Lasterr显示最新出错原因,并终止程序Lastwarn显示MATLAB自动给出的最新警告程序继续运行warning(message)显示警告信息message,程序继续运行,7.3脚本文件和函数文件,M脚本文件对比较简单的问题,从指令窗中直接输入指令进行计算十分简单。但随指令数增加或控制流复杂度的增加,以及重复计算要求的提出,直接从指令窗进行计算显得烦琐。故适宜脚本文件脚本文件运行后,所产生的所有变量都驻留在MATLAB基本工作空间(baseworkspace)中。只要用户不使用clear指令加以清除,且MATLAB指令窗不关闭,这些变量将一直保存在基本工作空间内。,7.3脚本文件和函数文件,M函数文件与脚本文件不同,函数文件(functionfile)犹如一个“黑箱”。从外界只能看到传给它的输入量和输出结果,而内部运作是藏而不见的。函数文件的第一行是以“function”引导的“函数声明行”。对“输入输出宗量”的标称数目没有限制。函数文件运行,MATLAB为之专门开辟临时工作空间(functionworkspace)。当执行完文件最后一条指令或遇return时,结束运行,并清除临时工作空间内所有中间变量。若在函数文件中调用某脚本文件,则该脚本文件运行产生的所有变量都存放于该函数空间中,而不存放在基本空间。,7.3脚本文件和函数文件,局部变量和全局变量局部变量:存在于函数空间内部的中间变量,产生于该函数运行过程中,影响范围仅限于该函数本身。全局变量:用global指令。每个共享全局变量的函数或MATLAB基本空间,必须逐个用global对具体变量加以专门定义。没采用global定义的函数或基本工作空间,无权享用全局变量。全局变量的定义必须在该变量被使用之前进行。为了提高M文件的可读性,选用大写字符命名全局变量。由于全局变量损害函数的封装性,故不提倡使用全局变量。,7.3脚本文件和函数文件,典型M函数文件的一般结构函数申明行:位于函数文件的首行,以function开头,函数名以及函数的输入输出宗量都在该行定义。H1行:紧随函数申明行之后以%开头的第一注释行。包括大写体的函数名,运用关键词简要描述的函数功能。在线帮助文本区:H1行及其之后的连续以%开头的所有注释行。包括函数输入输出宗量的含义,调用格式的说明。编写和修改记录:与在线帮助文本区相隔一个空行,以%开头,标志编写及修改该M文件的作者、日期、版本记录。函数体:与前面的注释行以空行相隔,由实现该M函数文件功能的MATLAB指令组成。例题exm,7.4变量的检测传递和限权使用函数,输入输出宗量检测指令nargin在函数体内,用于获取实际输入宗量nargout获取实际输出宗量nargin(fun)获取fun指定函数的标称输入宗量数nargout(fun)获取fun指定函数的标称输出宗量数inputname(n)给出第N个输入宗量的实际调用变量名跨空间变量传递跨空间计算串表达式的值evalin(workspace,expression)evalin(workspace,expression1,expression2)跨空间赋值assignin(workspace,VN,x)跨空间向VN变量赋值。例题exm,7.4变量的检测传递和限权使用函数,子函数MATLAB允许一个M函数文件包含多个函数的代码。第一个出现的函数成为主函数,其他函数成为子函数。保存时所用函数文件名与主函数名相同。外部程序只能对主函数进行调用。每个子函数的第一行是其函数申明行。主函数的位置不可改变,子函数的排列次序可以任意改变。子函数只能被处于同一文件的主函数或其他子函数调用。子函数的优先级仅次于内装函数。同一文件的主函数、子函数的工作空间彼此独立。各函数间的信息,通过输入输出宗量传递,或通过全局变量传递,或通过跨空间指令传递。,7.4变量的检测传递和限权使用函数,私用函数指位于private目录上的M文件函数。只能被private目录的直接父目录上的M函数文件所调用。不能被其他目录上任何M函数、M脚本文件或MATLAB指令窗中的命令所调用,也不能被直接父目录上的M脚本文件调用。私用函数的优先级低于内装函数和子函数,高于其他任何目录上的函数。,7.5串演算函数,“宏”操作能力(GUI的回调函数,各种泛函指令)串演算函数y=eval(CEM)执行CEM指定的计算y1,y2,=eval(CEM)执行对CEM的函数文件调用,输出结果y1,y2,=feval(FH,arg1,arg2,)执行函数句柄FH指定的计算例题exm7.5-3,7.5-4内联函数inline(CE,arg1,arg2)把串表达式转化为arg1,arg2等指定输入宗量的内联函数。inline(CE,n)把串表达式转化为x,P1,P2,Pn等指定输入宗量的内联函数。例题exm,7.6函数句柄,是一种新的数据类型。特点使feval以及借助于它的泛函指令工作更加可靠;使“函数调用”像“变量调用”一样灵活方便;可迅速获得同名重载函数的位置、类型信息;可在更大范围内调用子函数和私用函数,提高软件的重用性;提高函数的调用速度,尤其在反复调用情况下。,7.6函数句柄,

温馨提示

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

最新文档

评论

0/150

提交评论