第八章程序设计

上传人:痛*** 文档编号:123135884 上传时间:2022-07-21 格式:PPT 页数:42 大小:365KB
收藏 版权申诉 举报 下载
第八章程序设计_第1页
第1页 / 共42页
第八章程序设计_第2页
第2页 / 共42页
第八章程序设计_第3页
第3页 / 共42页
资源描述:

《第八章程序设计》由会员分享,可在线阅读,更多相关《第八章程序设计(42页珍藏版)》请在装配图网上搜索。

1、 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计第六章 M文件程序设计基础 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计主要内容M M文本编辑器文本编辑器M M文件文件MATLABMATLAB的数据类型的数据类型MATLABMATLAB控制流控制流程序调试程序调试函数句柄函数句柄 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计一、M文件M M脚本(命令)文件脚本

2、(命令)文件M M函数文件函数文件局部变量和全局变量局部变量和全局变量M M文件的一般结构文件的一般结构变量的检测传递和限权使用函数变量的检测传递和限权使用函数 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计1、M脚本(命令)文件(Script)是若干命令和函数的集合,执行特定的功能是若干命令和函数的集合,执行特定的功能 不存在参数的输入和输出不存在参数的输入和输出 在在MATLABMATLAB环境下,脚本可以直接访问整个环境下,脚本可以直接访问整个工作空间的变量;而且由脚本建立的变量在工作空间的变量;而且由脚本建立

3、的变量在脚本文件执行完毕后仍保持在工作空间中,脚本文件执行完毕后仍保持在工作空间中,直到直到clearclear命令清除为止。命令清除为止。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计建立建立fibonnaci.mfibonnaci.m文件,其内容如下:文件,其内容如下:%计算计算FibonnaciFibonnaci数数clear;clear;f(1)=1;f(1)=1;f(2)=1;f(2)=1;for n=1:1:8for n=1:1:8 f(n+2)=f(n)+f(n+1);f(n+2)=f(n)+f(n+1

4、);endendf f 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计2、M函数文件(Function)函数不但可以接受输入参数,还可以输出参数函数不但可以接受输入参数,还可以输出参数 存储函数的存储函数的M M文件的文件名必须与函数名一致文件的文件名必须与函数名一致 函数只能访问本身空间的变量函数只能访问本身空间的变量 每当函数文件运行,每当函数文件运行,MATLABMATLAB就会专门为它开辟就会专门为它开辟一个临时函数工作空间一个临时函数工作空间(Function workspace)(Function wor

5、kspace)。所有中间变量都存放在函数工作空间中。当执行所有中间变量都存放在函数工作空间中。当执行完文件最后一条指令或遇到完文件最后一条指令或遇到returnreturn时,就结束该时,就结束该函数文件的运行,同时该临时函数空间及其所有函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。的中间变量就立即被清除。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计MATLABMATLAB允许使用比允许使用比“标称数目标称数目”较少的输入输出较少的输入输出宗量,实现对函数的调用。宗量,实现对函数的调用。函数空间

6、随具体函数空间随具体M M函数文件的被调用而产生,随调函数文件的被调用而产生,随调用结束而删除。函数空间是相对独立的、临时的。用结束而删除。函数空间是相对独立的、临时的。在在MATLABMATLAB整个运行期间,可以产生任意多个临时整个运行期间,可以产生任意多个临时函数空间。函数空间。假如在函数文件中,发生对某脚本文件的调用,假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放于该那么该脚本文件运行产生的所有变量都存放于该函数空间之中,而不是存放在基本空间。函数空间之中,而不是存放在基本空间。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal

7、 UniversityMatlab程序设计程序设计把前例计算把前例计算fibonnacifibonnaci数的脚本文件改成函数文数的脚本文件改成函数文件如下:件如下:function f=fibo(Nfunction f=fibo(N)%FIBO;%FIBO;计算参数计算参数N N个个FibonnaciFibonnaci数的函数文件数的函数文件%f=fibo(N%f=fibo(N);N);N可取任意自然数可取任意自然数%.%.%编写于编写于.f(1)=1;f(1)=1;%初始化初始化1 1f(2)=1;f(2)=1;%初始化初始化2 2for n=1:N for n=1:N f(n+2)=f(

8、n)+f(n+1);f(n+2)=f(n)+f(n+1);end;end;西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计3 3、局部变量和全局变量、局部变量和全局变量局部(局部(LocalLocal)变量)变量n它存在于函数空间内部的中间变量,产生于该函数它存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身。的运行过程中,其影响范围也仅限于该函数本身。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计全局(全局

9、(GlobalGlobal)变量)变量n通过通过globalglobal指令,指令,MATLABMATLAB也允许几个不同的函数空间以也允许几个不同的函数空间以及基本空间共享一个变量。这种被共享的变量称为全局及基本空间共享一个变量。这种被共享的变量称为全局变量。每个希望共享全局变量的函数或变量。每个希望共享全局变量的函数或MATLABMATLAB基本工作基本工作空间,必须逐个用空间,必须逐个用globalglobal对具体变量加以专门定义。没对具体变量加以专门定义。没采用采用globalglobal定义的函数或基本空间,将无权享用全局变定义的函数或基本空间,将无权享用全局变量。量。n如果某个函

10、数的运作使全局变量的内容发生了变化,那如果某个函数的运作使全局变量的内容发生了变化,那么其他函数空间以及基本工作空间中的同名变量也就随么其他函数空间以及基本工作空间中的同名变量也就随之变化。之变化。n除非与全局变量联系的所有工作空间都被删除,否则全除非与全局变量联系的所有工作空间都被删除,否则全局变量依然存在。局变量依然存在。3、局部变量和全局变量、局部变量和全局变量 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计4 4、M M文件的一般结构文件的一般结构由于从结构上看,脚本文件只是比函数文件少一由于从结构上看,脚本

11、文件只是比函数文件少一个个“函数申明行函数申明行”。典型典型M M函数文件的结构:函数文件的结构:n函数申明(定义)行函数申明(定义)行(Function declaration line)(Function declaration line):nH1H1行行(The first help text line)(The first help text line):n在线帮助文本在线帮助文本(Help text)(Help text)区区:n编写和修改记录编写和修改记录:n函数体函数体(Function body)(Function body):西华师范大学计算机学院西华师范大学计算机学院Chi

12、naWest Nomal UniversityMatlab程序设计程序设计函数申明(定义)行函数申明(定义)行(Function declaration line)(Function declaration line)位于函数文件的首行,以位于函数文件的首行,以MATLABMATLAB关键字关键字functionfunction开头,函数名以及函数的输入输出宗量都开头,函数名以及函数的输入输出宗量都在这一行定义。在这一行定义。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计H1H1行行(The first help t

13、ext line):(The first help text line):紧随函数申明行之后以紧随函数申明行之后以%开头的第一注释行。开头的第一注释行。按按MATLABMATLAB自身文件的规则,自身文件的规则,H1H1行包含:大写体的行包含:大写体的函数文件名;运用关键词简要描述的函数功能。函数文件名;运用关键词简要描述的函数功能。该该H1H1行供行供lookforlookfor关键词查询和关键词查询和helphelp在线帮助使在线帮助使用。用。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计在线帮助文本在线帮助文本

14、(Help text)(Help text)区区:H1H1行及其之后的连续以行及其之后的连续以%开头的所有注释行开头的所有注释行构成整个在线帮助文本。它通常包括:函数输入构成整个在线帮助文本。它通常包括:函数输入输出宗量的含义,调用格式说明。输出宗量的含义,调用格式说明。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计编写和修改记录编写和修改记录与在线帮助文本区相隔一个空行,也以与在线帮助文本区相隔一个空行,也以%开开头,标志编写及修改该头,标志编写及修改该M M文件的作者和日期、版文件的作者和日期、版本记录。它用于软

15、件档案管理。本记录。它用于软件档案管理。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计函数体函数体(Function body):(Function body):为清晰起见,它与前面的注释行以空行相隔。这部为清晰起见,它与前面的注释行以空行相隔。这部分内容由实现该分内容由实现该M M函数文件功能的函数文件功能的MATLABMATLAB指令组成。它指令组成。它接收输入宗量,进行程序流控制,得到输出宗量。其中接收输入宗量,进行程序流控制,得到输出宗量。其中为阅读、理解方便,也配置适当的空行和注释。为阅读、理解方便,也配置

16、适当的空行和注释。若注解行很多,可以用注解块操作符若注解行很多,可以用注解块操作符%西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计5 5、变量的检测传递和限权使用函数变量的检测传递和限权使用函数 输入输出宗量检测指令输入输出宗量检测指令跨空间变量传递跨空间变量传递子函数和私用函数子函数和私用函数 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计输入输出宗量检测指令输入输出宗量检测指令narginnargin在函数体内,用于获取实际输入宗量在函

17、数体内,用于获取实际输入宗量nargoutnargout在函数体内,用于获取实际输出宗量在函数体内,用于获取实际输出宗量nargin(funnargin(fun)获取获取funfun指定函数的标称指定函数的标称输入宗量数输入宗量数nargout(funnargout(fun)获取获取funfun指定函数的标称指定函数的标称输出宗量数输出宗量数inputname(ninputname(n)在函数体内使用,给出第在函数体内使用,给出第n n个输入宗个输入宗量的实际调用变量名量的实际调用变量名 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatla

18、b程序设计程序设计跨空间变量传递跨空间变量传递全局变量全局变量函数输入参数函数输入参数跨空间计算串表达式的值跨空间计算串表达式的值跨空间赋值跨空间赋值 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计跨空间计算串表达式的值跨空间计算串表达式的值evalin(workspace,expressionevalin(workspace,expression)跨空间计算串表达式值跨空间计算串表达式值nworkspaceworkspace可取两个值:可取两个值:basebase和和callercallerBaseBase:表示计

19、算表示计算eval(expressioneval(expression)时,将)时,将从基本工作空间获得变量值。从基本工作空间获得变量值。CallerCaller:表示计算表示计算eval(expressioneval(expression)时,)时,将从主调函数工作空间获得变量值。主调函数是将从主调函数工作空间获得变量值。主调函数是相对被调函数而言的。这里,被调函数是指相对被调函数而言的。这里,被调函数是指evalinevalin所在的函数。所在的函数。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计evalin(w

20、orkspace,expression1,expressionevalin(workspace,expression1,expression2)2)跨空间计算替代串表达式值跨空间计算替代串表达式值nworkspaceworkspace可取两个值:可取两个值:basebase和和callercallern该调用格式的执行机理:该调用格式的执行机理:n先从所在函数空间获得变量值用先从所在函数空间获得变量值用eval(expression1eval(expression1)计算原串表达式;若该计)计算原串表达式;若该计算失败,则在从算失败,则在从workspace workspace 指定的(基本或

21、主指定的(基本或主调函数)工作空间获取变量值,再通过调函数)工作空间获取变量值,再通过eval(expression2eval(expression2)计算替代串表达式)计算替代串表达式 。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计跨空间赋值跨空间赋值assignin(workspace,VN,xassignin(workspace,VN,x)把当前工作空间内变量把当前工作空间内变量x x的值赋给的值赋给workspaceworkspace指指定空间名的定空间名的VNVN变量。变量。西华师范大学计算机学院西华师范

22、大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计子函数子函数MATLABMATLAB允许一个允许一个M M函数文件包含多个函数的代码。其中,函数文件包含多个函数的代码。其中,第一个出现的函数称为第一个出现的函数称为主函数主函数(Primary function)(Primary function),该文,该文件中的其他函数称为件中的其他函数称为子函数子函数(Subfunction(Subfunction)。保存时所用。保存时所用的函数名与主函数定义名相同。外部程序只能对主函数进的函数名与主函数定义名相同。外部程序只能对主函数进行调用。行调用。西华师

23、范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计子函数的性质:子函数的性质:每个子函数的第一行是其自己的函数申明行。每个子函数的第一行是其自己的函数申明行。在在M M函数文件内,主函数的位置不可改变,但子函数的排函数文件内,主函数的位置不可改变,但子函数的排列次序可任意改变。列次序可任意改变。子函数只能被处于同一文件的主函数或其他子函数调用。子函数只能被处于同一文件的主函数或其他子函数调用。在在M M函数文件中,任何指令通过函数文件中,任何指令通过“名字名字”对函数进行调用对函数进行调用时,子函数的优先级仅次于内装函数。时,

24、子函数的优先级仅次于内装函数。同一文件的主函数、子函数的工作空间都是彼此独立的。同一文件的主函数、子函数的工作空间都是彼此独立的。各函数间的信息,或通过输入输出宗量传递,或通过全各函数间的信息,或通过输入输出宗量传递,或通过全局变量传递,或通过跨空间指令传递。局变量传递,或通过跨空间指令传递。查看子函数的注释用查看子函数的注释用help mainfun/subfunhelp mainfun/subfun的方式的方式 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计私用(局部)函数私用(局部)函数所谓私用(局部)函数,是

25、指位于所谓私用(局部)函数,是指位于privateprivate目录上的目录上的M M文文件函数。件函数。私用(局部)函数的性质:私用(局部)函数的性质:n私用(局部)函数的构造与普通私用(局部)函数的构造与普通M M函数完全相同。函数完全相同。n私用(局部)函数的只能被私用(局部)函数的只能被privateprivate目录的目录的直接父目直接父目录录上的上的M M函数文件函数文件所调用。它不能被其他目录上的任所调用。它不能被其他目录上的任何何M M函数、函数、M M脚本文件或脚本文件或MATLABMATLAB指令窗中的命令所调用,指令窗中的命令所调用,也不能被直接父目录上的也不能被直接父目

26、录上的M M脚本文件调用。脚本文件调用。nM M文件中,任何指令通过文件中,任何指令通过“名字名字”对函数进行调用时,对函数进行调用时,私用(局部)函数的优先级虽低于内装函数和子函数,私用(局部)函数的优先级虽低于内装函数和子函数,但高与其他任何目录上的函数。但高与其他任何目录上的函数。nhelp,lookforhelp,lookfor等指令都不能提供关于私用(局部)函等指令都不能提供关于私用(局部)函数的任何帮助信息。数的任何帮助信息。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计二、二、MATLABMATLAB的

27、数据类型的数据类型6 6种基本数据类型及若干衍生类型。种基本数据类型及若干衍生类型。数据类型数据类型Data Types数值数值Numeric字符串字符串Char元胞元胞Cell构架构架Structure函数句柄函数句柄Function handleJAVA类类JAVA Class双精度双精度double单精度单精度single整数类整数类Int*,uint*稀疏稀疏sparse 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计数据文件数据文件MATLABMATLAB允许接受的数据文件大致可分为以允许接受的数据文件大致

28、可分为以下几类:下几类:n以以.mat.mat为扩展名的二进制数据文件。为扩展名的二进制数据文件。n以以.txt.txt、.dat.dat为扩展名的为扩展名的ASCIIASCII码数据文件。码数据文件。n以以.bmp.bmp、.jpg.jpg、.tif.tif等为扩展名的图像文件。等为扩展名的图像文件。n以以.wav.wav为扩展名的声音文件。为扩展名的声音文件。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计三、三、MATLABMATLAB控制流控制流forfor循环结构循环结构whilewhile循环结构循环结构

29、if-else-endif-else-end分支结构分支结构 switch-caseswitch-case结构结构 try-catchtry-catch结构结构 控制程序流的其它常用指令控制程序流的其它常用指令 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计1 1、forfor循环结构循环结构for x=arrayfor x=array(commands)(commands)endendarray也可以为二维mn,此时,以arry的列数n作为循环次数。每次循环时,将数组的每一列向量赋给x 西华师范大学计算机学院西华师

30、范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计2 2、whilewhile循环结构循环结构while expressionwhile expression(commands)(commands)endend当当expressionexpression为空数组时,条件判定为假为空数组时,条件判定为假如果如果expressionexpression为数组,只有它所有元素的值不为,为数组,只有它所有元素的值不为,条件才为真条件才为真 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程

31、序设计3 3、if-else-endif-else-end分支结构分支结构单分支单分支双分支双分支多分支多分支if if expressionexpression (commands)(commands)endendif expressionif expression (commands1)(commands1)elseelse (commands2)(commands2)endendif expression1if expression1 (commands1)(commands1)elseifelseif expression2 expression2 (commands2)(comman

32、ds2)elseelse (commandsk (commandsk)endend常用常用常用常用该使用方法常被该使用方法常被switch-switch-casecase所取代所取代 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计4 4、switch-caseswitch-case结构结构switch expressswitch express case test1 case test1 (commands1)(commands1)case test2case test2 (commands2)(commands2)

33、case testkcase testk (commandsk(commandsk)otherwiseotherwise(commands)(commands)endendExpressExpress可以是可以是数值数值或或字符串字符串表达式表达式 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计5 5、try-catchtry-catch结构结构trytry(commands1)(commands1)catchcatch(commands2)(commands2)endend组命令组命令1 1总被执行。若正确,则跳出

34、此结构总被执行。若正确,则跳出此结构仅当组命令仅当组命令1 1出现执行错误,组命令出现执行错误,组命令2 2才被执行才被执行如果组命令如果组命令2 2出错,则直接退出循环,除非,其中有出错,则直接退出循环,除非,其中有try try catchcatch语句语句 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计6 6、控制程序流的其它常用指令、控制程序流的其它常用指令指令及使用格式指令及使用格式使用说明使用说明v=input(message)v=input(message,s)该指令执行时,该指令执行时,“控制权控制权

35、”交给键盘;待输入结束,按交给键盘;待输入结束,按下下Enter键,键,“控制权控制权”交还交还MATLAB。message是提是提示用的字符串。第一种格式用于键入数值、字符串、元示用的字符串。第一种格式用于键入数值、字符串、元胞数组等数据;第二种格式,不管键入什么,总是以字胞数组等数据;第二种格式,不管键入什么,总是以字符串形式赋给变量符串形式赋给变量vkeyboard遇到遇到keyboard时,将时,将“控制权控制权”交给键盘,用户可从键交给键盘,用户可从键盘输入各种盘输入各种MATLAB指令。仅当用户输入指令。仅当用户输入return指令后,指令后,“控制权控制权”才交还给程序。它与才交

36、还给程序。它与input的区别是:它允的区别是:它允许输入任意多个许输入任意多个MATLAB指令,而指令,而input只能输入赋给只能输入赋给变量的值变量的值breakbreak指令可导致包含该指令的指令可导致包含该指令的while、for环终止;也可环终止;也可在在if-end,switch-case,try-catch中导致中断中导致中断continue跳过位于其后的循环中的其他指令,执行循环的下一个跳过位于其后的循环中的其他指令,执行循环的下一个迭代迭代pausepause(n)第一种格式使程序暂停执行,等待用户按任意键继续;第一种格式使程序暂停执行,等待用户按任意键继续;第二种格式使程

37、序暂停第二种格式使程序暂停n秒后,再继续执行秒后,再继续执行 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计指令及使用格式指令及使用格式使用说明使用说明return结束结束return指令所在函数的执行,而把控制转至主调函数或指令所在函数的执行,而把控制转至主调函数或指令窗。否则,只有待整个被调函数执行完后,才会转出指令窗。否则,只有待整个被调函数执行完后,才会转出error(message)显示出错信息显示出错信息message,终止程序,终止程序lasterr显示最新出错原因,并终止程序显示最新出错原因,并终止程

38、序lastwarm显示显示MATLAB自动给出的最新警告程序继续运行自动给出的最新警告程序继续运行warning(message)显示警告信息显示警告信息message,程序继续运行,程序继续运行6 6、控制程序流的其它常用指令、控制程序流的其它常用指令 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计四、程序调试与优化四、程序调试与优化程序调试概述程序调试概述一般调试技巧一般调试技巧程序调试器的使用程序调试器的使用程序设计的优化程序设计的优化M M文件调用记录文件调用记录 西华师范大学计算机学院西华师范大学计算机学院

39、ChinaWest Nomal UniversityMatlab程序设计程序设计程序调试概述程序调试概述MATLABMATLAB的调试器的调试器(Debugger)(Debugger)可以迅速地可以迅速地帮您找出程序错误所在,其帮您找出程序错误所在,其功能功能包含:包含:n查询每一个函数的工作空间查询每一个函数的工作空间(Workspace).(Workspace).n显示函数调用的堆栈显示函数调用的堆栈(Function Call(Function Call Stack).Stack).n一行一行地执行一行一行地执行M M文件文件.西华师范大学计算机学院西华师范大学计算机学院ChinaWes

40、t Nomal UniversityMatlab程序设计程序设计一般调试技巧一般调试技巧一般而言,计算机程序可能发生的错误可分为两种:一般而言,计算机程序可能发生的错误可分为两种:n语法错误(语法错误(Syntax ErrorsSyntax Errors)n逻辑错误(逻辑错误(Logic ErrorsLogic Errors)一般检测逻辑错误的方法:一般检测逻辑错误的方法:n删除表达式最尾端的分号。删除表达式最尾端的分号。n若调试一个单独函数,可在其第一行的函数申明行加上若调试一个单独函数,可在其第一行的函数申明行加上%,并,并定义输入变量的值,直接以脚本的方式来执行此定义输入变量的值,直接以

41、脚本的方式来执行此M M文件,并保文件,并保留所有变量于留所有变量于MATLABMATLAB工作空间中,以便后续查看及调试。工作空间中,以便后续查看及调试。n在程序中加入在程序中加入keyboardkeyboard命令,可使程序执行至此处即暂停,命令,可使程序执行至此处即暂停,并显示并显示“k”k”的提示号。此时可任意查看或改变工作空间的的提示号。此时可任意查看或改变工作空间的任何变量。若要继续执行程序,可在命令窗输入任何变量。若要继续执行程序,可在命令窗输入“return”return”并按下并按下EnterEnter键。键。n使用使用MATLABMATLAB程序调试器。程序调试器。西华师范

42、大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计程序设计的优化程序设计的优化以矩阵运算代替循环运算以矩阵运算代替循环运算数据的预定义数据的预定义内存的管理内存的管理 西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计五、函数句柄五、函数句柄函数句柄函数句柄(Function handle)(Function handle)是是MATLAB6.0MATLAB6.0版启用的新数据类型。它保存着版启用的新数据类型。它保存着“为该函为该函数创建句柄时的路径、视野

43、、函数名,以数创建句柄时的路径、视野、函数名,以及可能存在的重载方法及可能存在的重载方法”。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计函数句柄的函数句柄的创建创建和和观察观察函数句柄并不是伴随函数文件而自动形成的文件函数句柄并不是伴随函数文件而自动形成的文件“属性属性”,是必须通过专门的定义才会生成的。,是必须通过专门的定义才会生成的。为一个为一个函数定义句柄的方法函数定义句柄的方法有两种:有两种:n利用利用 符号;符号;n利用转换函数利用转换函数str2funcstr2func。对函数句柄的内涵观察需借助专门指

44、令对函数句柄的内涵观察需借助专门指令FunctionsFunctions实现。实现。西华师范大学计算机学院西华师范大学计算机学院ChinaWest Nomal UniversityMatlab程序设计程序设计函数句柄的函数句柄的基本用法基本用法假设,一个函数的调用格式为:假设,一个函数的调用格式为:argout1,argout2,argout1,argout2,argoutn,argoutn=FunName(argin1,argin2,=FunName(argin1,argin2,arginnarginn)又假设该函数的句柄通过以下指令获得:又假设该函数的句柄通过以下指令获得:Hfun=FunNameHfun=FunName;那么通过函数句柄实现函数运算的调用格式是:那么通过函数句柄实现函数运算的调用格式是:argout1,argout2,argout1,argout2,argoutn,argoutn=feval(Hfun,argin1,argin=feval(Hfun,argin1,argin2,2,arginnarginn)

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!