




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 程序设计和M文件 5.1 程序控制程序控制 5.2 M文件结构文件结构 5.3 函数的使用函数的使用 5.4 程序的调试程序的调试 5.5 匿名函数、匿名函数、inline对象和函数句柄对象和函数句柄 5.6 函数绘图函数绘图 5.7 数值分析数值分析5.1 5.1 程序控制程序控制n三种常用的结构:三种常用的结构:n顺序结构、分支结构和循环结构。顺序结构、分支结构和循环结构。n4种程序流程控制语句:种程序流程控制语句:n分支控制语句、循环控制语句、错误控分支控制语句、循环控制语句、错误控制语句和流程控制语句。制语句和流程控制语句。5.1.1 5.1.1 分支控制语句分支控制语句实现满
2、足一定条件就执行相应分支的功能。实现满足一定条件就执行相应分支的功能。n1. if 结构结构nif 条件条件1n 语句段语句段1nelseif 条件条件2n 语句段语句段2n. nelsen 语句段语句段n nend例51221101111xxxxx x=-5:0.1:5;if x=1 y=x.2-1;elseif -1x1 y=0;else y=-x.2-1;endplot(x,y);-5-4-3-2-1012345-30-25-20-15-10-502. switch 结构常用于各种条件的列举。nswitch 表达式ncase 值1n 语句段1 ncase 值2n 语句段2n.n othe
3、rwise n 语句段n nend 说明说明: (1)表达式只能是标量或字符串;表达式只能是标量或字符串;(2) case后面的值可以是标量、字符后面的值可以是标量、字符串或元胞数组串或元胞数组;(3) switch和和end必须配对使用。必须配对使用。例例5-2 使用使用switch结构判断学生成绩的等级,结构判断学生成绩的等级,90分以上为优,分以上为优,8090为良,为良,7080为中,为中,6070为及格,为及格,60分以下为不及格。分以下为不及格。nscore=98;ns1=fix(score/10);%取十位数取十位数nswitch s1n case 9,10n s=优优n cas
4、e 8n s=良良n case 7n s=中中n case 6n s=及格及格n otherwisen s=不及格不及格nends =优5.1.2 循环控制语句循环控制语句 实现将某段程序重复执行。实现将某段程序重复执行。n1. for循环循环nfor 循环变量循环变量=arrayn循环体循环体nend n说明:说明:array可以是向量也可以是矩阵,循可以是向量也可以是矩阵,循环执行的次数就是环执行的次数就是array的的列数列数,每次循环,每次循环中循环变量依次取中循环变量依次取array的各列并执行循环的各列并执行循环体,直到体,直到array所有列取完。所有列取完。练习练习nfor n
5、=1:5 %循环5次nfor n= -1:0.1:1%循环21次nfor n=linspace(-2*pi,2*pi,5)%循环5次na=eye(2,3); for n=a%循环3次,n为列向量n例53nx=eye(5);nlen=length(x)nfor n=1:lenn x(n,n)=nnendlen = 5x = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1x =1 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1x = 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0
6、 0 4 0 0 0 0 0 5or:x=eye(5);for n=1:length(x)x(n,:)=x(n,:)*nend2. while循环循环常用于预先知道循环条常用于预先知道循环条件或循环结束条件的情况。件或循环结束条件的情况。nwhile 条件表达式条件表达式n 循环体循环体nend n例例5-4 使用使用while循环计算循环计算f(x)=sin(x),x5且每且每次次x递增递增ln(x)。nx=0.1;nwhile x1000时终止计算。时终止计算。nx=0:10;nfor n=xn f=exp(n);n if f1000n breakn endnendn = 7f =1.09
7、66e+003例例5-6 使用使用for循环将字符串中的数值循环将字符串中的数值取出,遇到非数值则跳过。取出,遇到非数值则跳过。nstr=The result is 100.;nlen=length(str);ns= ;nfor n=1:len n if str(n)9 | str(n)=0 & str(n)a=1 3 5;b=1 2 3;try c=a.*bcatch c=a.*b;end cc = 1 6 15 lastmsg,lastid=lasterrlastmsg =Error using = timesMatrix dimensions must agree.lastid =MAT
8、LAB:dimagree例5-7-2a=1 2 3b=4 5 6try c=a*b; disp(try is excute)catch c=a.*b; disp(catch is excute)endc5.1.4 流程控制命令n1. return命令命令nreturn命令命令: (1)用于结束程序的执行,并立即返回到上一级调用于结束程序的执行,并立即返回到上一级调 用函数用函数 (2) 终止键盘方式终止键盘方式n注意:注意:当程序进入死当程序进入死(无限无限)循环时,则按循环时,则按Ctrl+break键来终止程序的运行。键来终止程序的运行。n2. keyboard命令命令nkeyboard命
9、令用来使程序暂停运行,等待键盘命命令用来使程序暂停运行,等待键盘命令,命令窗口出现令,命令窗口出现“K”提示符,当键盘输入提示符,当键盘输入“return”后,程序才继续运行。后,程序才继续运行。keyboard命令可命令可以用来在程序调试或程序执行时修改变量。以用来在程序调试或程序执行时修改变量。a=1 3 5;keyboardtry c=a.*b;catch c=a.*b;endcn3. input命令命令n a=input(Place enter a data:);n r=input(str,s) %从键盘中输入字符串保存到变量从键盘中输入字符串保存到变量rn4. disp命令命令ndi
10、sp命令是较常用的显示命令,常用来显示字符命令是较常用的显示命令,常用来显示字符串型的信息提示。串型的信息提示。n5. pause命令命令npause命令用来使程序暂停运行,当用户按任意命令用来使程序暂停运行,当用户按任意键才继续执行。常用于程序调试或查看中间结键才继续执行。常用于程序调试或查看中间结果,也可以用来控制执行的速度。果,也可以用来控制执行的速度。pause的命令的命令格式如下:格式如下:npause(n) %暂停n秒练习练习5.2 M文件结构nMATLAB 7.3的程序如果要保存则使用的程序如果要保存则使用扩展名是扩展名是“.m”的的M文件,文件,M文件有两种文件有两种即即M脚本
11、文件(脚本文件(Script File)和)和M函数文函数文件(件(Function File)。)。5.2.1 M文件的一般结构文件的一般结构n1. 函数声明行函数声明行n函数声明行是在函数声明行是在M函数文件的第一行,只有函数文件的第一行,只有M函函数文件必须有,以数文件必须有,以“function”引导并指定函数名、引导并指定函数名、输入和输出参数,输入和输出参数,M脚本文件没有函数声明行。脚本文件没有函数声明行。n2. H1行行nH1行是帮助文字的第一行。行是帮助文字的第一行。n3. 帮助文本帮助文本n4. 程序代码程序代码 n程序代码由程序代码由MATLAB语句和注释语句构成。语句和
12、注释语句构成。5.2.2 M脚本文件和脚本文件和M函数文件函数文件n1. M脚本文件脚本文件 格式格式: 通常为一连串指令,没有函数声明行,无输入和通常为一连串指令,没有函数声明行,无输入和输出参数输出参数.nM脚本文件的说明:脚本文件的说明: (1)运行脚本文件时,只是简单地按顺序从文件中读取一)运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到条条命令,送到MATLAB命令窗口中去执行;命令窗口中去执行; (2)M脚本文件运行产生的变量都驻留在脚本文件运行产生的变量都驻留在MATLAB的基的基本工作空间中本工作空间中,在命令窗口中运行的命令可以使用这些变,在命令窗口中运行的命令可
13、以使用这些变量;量; (3)脚本文件的命令可以访问工作空间的所有数据,因此)脚本文件的命令可以访问工作空间的所有数据,因此要要注意避免工作空间和脚本文件中的同名变量相互覆盖注意避免工作空间和脚本文件中的同名变量相互覆盖,一般在一般在M脚本文件的开头使用脚本文件的开头使用“clear”命令清除工作空间命令清除工作空间的变量。的变量。例5-8 在在M文件编辑调试器窗口中编写文件编辑调试器窗口中编写M脚本脚本文件得出文件得出10 50范围内的所有素数。范围内的所有素数。n%EX5_8 计算1050内的素数nclearny1=primes(50);%获得50以内的所有素数nn=length(prime
14、s(10);%获得10以内素数的个数ny=y1(n+1:end)n在命令窗口中输入:n ex5_8ny =n 11 13 17 19 23 29 31 37 41 43 47n在工作空间中就可以查看到变量在工作空间中就可以查看到变量y1、n和和y,并可以修改,并可以修改和使用这些变量。和使用这些变量。练习练习 PRIMES(N) is a row vector of the prime numbers less than or equal to N. A prime number is one that has no factors other than 1 and itself.2. M函数
15、文件函数文件n格式:有函数声明行,可以输入参数和输出参数。格式:有函数声明行,可以输入参数和输出参数。 nM函数文件的说明如下:函数文件的说明如下:n(1)M函数文件在运行过程中产生的变量都存放函数文件在运行过程中产生的变量都存放在在函数本身的工作空间函数本身的工作空间中。函数的工作空间随具中。函数的工作空间随具体的体的M函数文件调用而产生,并随调用结束而删函数文件调用而产生,并随调用结束而删除,如果运行多个函数则产生多个临时的函数工除,如果运行多个函数则产生多个临时的函数工作空间;作空间;n(2)当文件执行完最后一条命令或遇到)当文件执行完最后一条命令或遇到“return”命令时就结束函数文
16、件的运行,同时函数工作空命令时就结束函数文件的运行,同时函数工作空间的变量被清除;间的变量被清除;n(3)一个)一个M函数文件至少要定义一个函数。函数文件至少要定义一个函数。函数声明行的格式:函数声明行的格式:function 输出参数列表输出参数列表 = 函数名函数名(输入参数列表输入参数列表) n说明:说明:n函数名是函数的名称,保存时最好函数名与文件函数名是函数的名称,保存时最好函数名与文件名一致,当不一致时,名一致,当不一致时,MATLAB以文件名为准;以文件名为准;n输入参数列表是函数接收的输入参数,多个参数输入参数列表是函数接收的输入参数,多个参数间用间用“,”分隔;分隔;n输出参
17、数列表是函数运算的结果,多个参数间用输出参数列表是函数运算的结果,多个参数间用“,”分隔。分隔。函数定义的形式举例:函数定义的形式举例:n定义多输入输出参数的函数定义多输入输出参数的函数 function x,y,z=sphere(theta,phi,rho)n无输入参数的函数无输入参数的函数 function y=sphere (or sphere()n无输出参数的函数无输出参数的函数 function sphere(x) (or function =sphere(x)例例5-9 将例将例5-7的计算行向量乘积的运的计算行向量乘积的运算使用算使用M函数文件保存。函数文件保存。function
18、 c=ex5_9(a,b) %EX5_9(a,b) returns the product of a and b % c is the product % a is the multiplier % b is the multiplicand % copyright 2007-10-01 try c=a.*b;catch c=a.*b;end调用该函数:调用该函数: z=ex5_9(1 2 3,4 5 6) z = 4 10 18例例 :nfunction distance = dist2 (x1, y1, x2, y2)n% DIST2 Calculate the distance betw
19、een two pointsn% Function DIST2 calculates the distance betweenn% two points (x1,y1) and (x2,y2) in a Cartesian coordinate system.n% % Calling sequence:n% res = dist2(xl, y1, x2, y2)n% Define variables:n% x1 - x-position of point 1n% y1 - y-position of point 1n% x2 - x-position of point 2n% y2 - y-p
20、osition of point 2n% distance - Distance between pointsn% Record of revisions:n% Date Programmer Description of changen% 12/15/98 S. J. Chapman Original coden% Calculate distance.ndistance = sqrt(x2-x1).2 + (y2-y1).2);使用该函数的脚本文件如下:使用该函数的脚本文件如下:n% Script file: test_dist2.mn% Purpose:n% This program t
21、ests function dist2.n% Record of revisions:n% Date Programmer Description of changen% 12/15/98 S. J. Chapman original coden% Define variables:n% ax - x-position of point an% ay - y-position of point an% bx - x-position of point bn% by - y-position of point bn% result- Distance between the pointsn% G
22、et input data.ndisp(Calculate the distance between two points:);nax = input(Enter x value of point a:);nay = input(Enter y value of point a:);nbx = input(Enter x value of point b:);nby = input(Enter y value of point b:);n% Evaluate functionnresult = dist2 (ax, ay, bx, by);n% Write out result.nfprint
23、f(The distance between points a and b is %fn, result);直接在命令窗口调用该函数:直接在命令窗口调用该函数:ntest_dist2nCalculate the distance between two points:nEnter x value of point a: 1nEnter y value of point a: 1nEnter x value of point b: 4nEnter y value of point b: 5nThe distance between points a and b is 5.000000nhelp
24、dist2nDIST2 Calculate the distance between two pointsnFunction DIST2 calculates the distance betweenntwo points (xl,yl) and (x2,y2) in a Cartesianncoordinate system.nCalling sequence:nres = dist2(xl, y1, x2, y2)n5.3 函数的使用函数的使用n模块化程序设计模块化程序设计: :将一个大任务分成若干小将一个大任务分成若干小的子任务的子任务, ,用一个一个的函数完成这些子任用一个一个的函数完
25、成这些子任务务, ,通过函数间的调用完成复杂任务通过函数间的调用完成复杂任务. .n优点优点: :易于维护和修改程序易于维护和修改程序. .n注意注意: :主函数可以调用子函数主函数可以调用子函数, ,子函数可以子函数可以调用其他子函数或本身调用其他子函数或本身, ,但子函数不能调用但子函数不能调用主函数主函数. .5.3.1 主函数和子函数主函数和子函数n一个一个M函数文件中可以包含一个或多个函数函数文件中可以包含一个或多个函数.n1. 主函数主函数 主函数是出现在文件最上方的函数,即第一行声明的函主函数是出现在文件最上方的函数,即第一行声明的函数数.一个一个M文件只能有一个主函数,通常主函
26、数名与文件只能有一个主函数,通常主函数名与M函函数文件名相同。数文件名相同。n2. 子函数子函数 (1)子函数的)子函数的次序无任何限制次序无任何限制; (2)子函数只能被)子函数只能被同一文件中同一文件中的函数(主函数或子函数)的函数(主函数或子函数)调用,不能被其它文件的函数调用;调用,不能被其它文件的函数调用; (3)同一文件的主函数和子函数运行时的)同一文件的主函数和子函数运行时的工作空间是相工作空间是相互独立的互独立的。 eg. ex5_105.3.2 函数的输入输出参数函数的输入输出参数nMatlab函数调用过程实际上也是参数的函数调用过程实际上也是参数的传递过程传递过程.n函数函
27、数A调用了函数调用了函数B,称称A为为 “主调函数主调函数”,而而B为为 “被调用函数被调用函数”.n函数通过输入参数接收数据函数通过输入参数接收数据,经函数运算经函数运算后由输出参数输出结果后由输出参数输出结果.1. 参数的传递参数的传递n函数的参数传递是将主调函数中的变量值传给被函数的参数传递是将主调函数中的变量值传给被调函数的输入参数。调函数的输入参数。 (1)函数参数传递的是)函数参数传递的是数值数值; (2)参数的存储空间:被调函数的输入参数存)参数的存储空间:被调函数的输入参数存放在函数的工作空间中,与放在函数的工作空间中,与MATLAB的工作空的工作空间是独立的,当调用结束时函数
28、的工作空间被清间是独立的,当调用结束时函数的工作空间被清除,输入参数就消失了。除,输入参数就消失了。eg. ex5_102. 2. 输入输出参数的个数输入输出参数的个数nMatlab中调用函数时的参数个数和函数声明时的中调用函数时的参数个数和函数声明时的不一定相同,可用专用函数确定实际调用时输入不一定相同,可用专用函数确定实际调用时输入输出参数的个数。输出参数的个数。n(1) nargin和和nargout函数函数 nargin(fun) %获取函数获取函数fun的输入参数个数的输入参数个数 nargout(fun) %获取函数获取函数fun的输出参数个数的输出参数个数n说明:说明:fun是函
29、数名,当是函数名,当nargin和和nargout函数在函函数在函数体内时数体内时fun可省略,在函数外时可省略,在函数外时fun不省略。不省略。补充补充: 可选参数可选参数 nMATLAB的许多函数有可选参数的许多函数有可选参数,它们如何判断它们如何判断用到了哪些参数以及进行了什么操作呢用到了哪些参数以及进行了什么操作呢? n可以用可以用 8个特殊函数个特殊函数 来获得可选参数的信息来获得可选参数的信息,及报及报告参数中的错误告参数中的错误.n nargin 该函数返回调用函数时实际用的输入参数的该函数返回调用函数时实际用的输入参数的个数个数.n nargout 该函数返回调用函数时实际用的
30、输出参数的该函数返回调用函数时实际用的输出参数的个数个数.n nargchk 当调用函数时用了太少或太多输入参数时当调用函数时用了太少或太多输入参数时,该函数返回一个标准的错误信息该函数返回一个标准的错误信息.n error 当参数有致命错误时当参数有致命错误时,显示错误信息并异常显示错误信息并异常中断产生错误的函数中断产生错误的函数.n warning 当参数无致命错误时当参数无致命错误时,显示警告信息且函数继显示警告信息且函数继续执行续执行. n inputname 该函数根据参数个数返回实际的变量名该函数根据参数个数返回实际的变量名.n help nargchkn NARGCHK Val
31、idate(验证验证) number of input arguments. n nMSG = NARGCHK(LOW,HIGH,N) returns an appropriate error message string if N is not between LOW and HIGH. If it is, NARGCHK returns an empty matrix. nExample:n error(nargchk(1, 3, nargin, struct)n eg. 使用可选参数使用可选参数nfunction mag, angle = polar_value(x,y)n% POLAR
32、_VALUE Converts (x,y) to (r,theta)n% Function POLAR_VALUE converts an input (x,y)n% value into (r,theta), with theta in degrees.n% It illustrates the use of optional arguments,n% Define variables:n% angle - Angle in degreesn% msg - Error messagen% mag - Magnituden% x - Input x valuen% y - Input y va
33、lue (optional)n% Record of revisions:n% Date Programmer Description of changen% 12/16/98 S. J.Chapman original coden% Check for a legal number of input arguments.nmsg = nargchk(1,2,nargin);nerror(msg);n% If the y argument is missing, set it to 0.nif nargin mag angle = polar_value ? Error using = pol
34、ar-value Not enough input arguments.nmag angle = polar_value(1,-1,1) ? Error using = polar value Too many input arguments.nmag angle = polar_value(1) mag = 1 angle = 0nmag angle = polar_value(1,-1) mag =1.4142 angle =-45nmag = polar_value(1,-1) mag =1.4142nmag angle = polar_value(0,0) Warning: Both
35、x and y are zero: angle is meaningless! In d:bookmatlabchap5polar_value.m at line 32 mag =0 angle =0(2) varargin和和varargout函数函数n用于处理复杂输入输出参数,用于处理复杂输入输出参数,varargin和和varargout函数需要与分支结构结合使用,将函数调用时实际函数需要与分支结构结合使用,将函数调用时实际传递的参数构成元胞数组,通过访问元胞数组中各传递的参数构成元胞数组,通过访问元胞数组中各元素内容来获得输入输出变量。元素内容来获得输入输出变量。n格式格式: func
36、tion y=fun(varargin) %输入参数为输入参数为varargin的函数的函数fun function varargout=fun(x) %输出参数为输出参数为varargout的函数的函数fun function varargout=fun(varargin) 5.3.3 5.3.3 局部变量、全局变量和静态变量局部变量、全局变量和静态变量n变量的作用域和生存期:作用域是变量的作变量的作用域和生存期:作用域是变量的作用范围,生存期是变量的生存时间。用范围,生存期是变量的生存时间。n根据变量作用域的不同根据变量作用域的不同, ,可将其分为局部变可将其分为局部变量和全局变量。量和全
37、局变量。n根据变量生存期的不同,可将其分为自动变根据变量生存期的不同,可将其分为自动变量和静态变量。量和静态变量。n注意:函数名与同一作用域的变量名不能重注意:函数名与同一作用域的变量名不能重复复, ,否则函数无法被调用否则函数无法被调用. .1. 1. 局部变量局部变量n局部变量(局部变量(Local Variables)的作用范围是定)的作用范围是定义该变量的函数内部。义该变量的函数内部。n声明局部变量:不需要特别声明声明局部变量:不需要特别声明n变量的存储:在独立的函数工作空间中变量的存储:在独立的函数工作空间中n变量结束:变量所在的函数执行完毕时。变量结束:变量所在的函数执行完毕时。2
38、. 2. 全局变量全局变量 全局变量具有全局作用域,可在不同函数和全局变量具有全局作用域,可在不同函数和Matlab工作空间中共享。工作空间中共享。 作用:减少参数传递过程,提高程序执行效率。作用:减少参数传递过程,提高程序执行效率。 缺点:全局变量在任何定义过的函数中都可以修缺点:全局变量在任何定义过的函数中都可以修改,使用时应十分小心。改,使用时应十分小心。(1)声明全局变量)声明全局变量 全局变量在使用前必须用全局变量在使用前必须用“global”声明,而且声明,而且每个要共享全局变量的函数和工作空间,都必须每个要共享全局变量的函数和工作空间,都必须逐个用逐个用“global”对该变量加
39、以声明。对该变量加以声明。 (2)清除全局变量)清除全局变量 使用使用clear命令,命令格式如下:命令,命令格式如下: clear global 变量名变量名%清除某个全局变量清除某个全局变量 clear global%清除所有的全局变量清除所有的全局变量 eg.li5_133.3.静态变量静态变量n格式:格式: persistent x; 注意注意:它只能在它只能在function里声明里声明,且只有这个且只有这个function才能认识它才能认识它 .n声明后需初始化,注意不能直接赋值声明后需初始化,注意不能直接赋值;而是先用而是先用isempty(x)判断判断x是否已经赋值,若没有,则
40、可以赋值给是否已经赋值,若没有,则可以赋值给x。如:如: function y=test() persistent a; if isempty(a) a=0; end a=a+1; y=a;n之后第一次调用之后第一次调用y=test;结果结果y=1,第二次调用,第二次调用y=test;结果结果y=2。就是说就是说a记录了每次调用记录了每次调用function后的结果。后的结果。n如果如果a为自动变量,则每次调用为自动变量,则每次调用y=test后结果都是后结果都是1.5.3.4 5.3.4 嵌套函数、私有函数和重载函数嵌套函数、私有函数和重载函数n1. 嵌套函数嵌套函数n在在MATLAB中一个
41、函数的内部还可以定义一个或中一个函数的内部还可以定义一个或多个函数,这种定义在其他函数内部的函数就称为多个函数,这种定义在其他函数内部的函数就称为嵌套函数。此时,每个函数必须用嵌套函数。此时,每个函数必须用end结束。结束。n调用原则:调用原则: (1) 外层函数可以调用内一层函数,但不能隔层调外层函数可以调用内一层函数,但不能隔层调用;用; (2) 同层嵌套函数可以互相调用同层嵌套函数可以互相调用 (3) 内层函数可以调用外一层函数及和外层函数同内层函数可以调用外一层函数及和外层函数同层的其他函数。层的其他函数。nfunction A(x)n function B(x,y)n functio
42、n C(z)n endn endn function D(x)n function E(z,y)n endn endnendnA可以调用:B,DnB可以调用:C,D,AnC可以调用:B,D,EnD可以调用:E,B,AnE可以调用:D,B,Cn2. 私有函数私有函数 私有函数是限制访问权限的函数,私有函数存私有函数是限制访问权限的函数,私有函数存放在放在“private”子目录中,只能被其直接父目子目录中,只能被其直接父目录的录的M函数文件所调用。函数文件所调用。n3. 重载函数重载函数 重载函数是指两个函数使用相同的名称,处理重载函数是指两个函数使用相同的名称,处理的功能相似,但参数类型或个数
43、不同,重载函的功能相似,但参数类型或个数不同,重载函数通常放在不同的文件夹下,文件夹名称以数通常放在不同的文件夹下,文件夹名称以“”开头后面跟一个数据类型名。开头后面跟一个数据类型名。5.3.5 函数的工作过程和函数的工作过程和P码文件码文件n1. 函数的搜索过程函数的搜索过程n当在当在MATLAB中输入一个标识符时,首先确中输入一个标识符时,首先确认是不是变量名,若不是,则做如下搜索:认是不是变量名,若不是,则做如下搜索:n检查是否是本检查是否是本M函数文件内部的子函数;函数文件内部的子函数;n检查是否是检查是否是“private”目录下的私有函数;目录下的私有函数;n检查是否在当前路径中;
44、检查是否在当前路径中;n检查是否在搜索路径中。检查是否在搜索路径中。2. P2. P码文件码文件nP码就是伪代码(码就是伪代码(Pseudocode),一个),一个M文文件第一次被调用时,件第一次被调用时,MATLAB就将其进行就将其进行编译并生成编译并生成P码文件存放在内存中,生成的码文件存放在内存中,生成的P码文件与原码文件与原M文件名相同,其扩展名为文件名相同,其扩展名为“.p”,P码文件的保密性好。码文件的保密性好。npcode File1.m,File2.m. -inplace %生成生成File1.p,File2.p文件文件3. 函数的工作空间函数的工作空间n每一个每一个M函数运行
45、时都有一个内存区,函数运行时都有一个内存区,称为函数的工作空间。称为函数的工作空间。n清除函数的工作空间:清除函数的工作空间: clear functions %清除所有编译过的清除所有编译过的M函数文件和函数文件和MEX文件工作空间文件工作空间 clear function funname %清除某个编译过的函数工作空间清除某个编译过的函数工作空间5.4 程序的调试程序的调试5.4.1 直接检测直接检测n(1)对于需要检测的变量可以通过删除语句行末)对于需要检测的变量可以通过删除语句行末尾的分号,或在程序的适当位置加显示变量值的尾的分号,或在程序的适当位置加显示变量值的语句,将结果显示在命令
46、窗口中;语句,将结果显示在命令窗口中;n(2)以脚本文件的方式来执行该函数。调试函数)以脚本文件的方式来执行该函数。调试函数时,可以将该函数的第一句函数声明行前加时,可以将该函数的第一句函数声明行前加“%”,并给输入参数赋值;并给输入参数赋值;n(3)在程序的适当位置添加)在程序的适当位置添加“keyboard”语句,语句,当程序运行至此句会暂停运行,并在命令窗口显当程序运行至此句会暂停运行,并在命令窗口显示示“k”提示符,这时就可以在命令窗口查看和提示符,这时就可以在命令窗口查看和修改各变量的内容。修改各变量的内容。5.4.2 M文件编辑调试器窗口文件编辑调试器窗口n1. “Debug”菜单
47、菜单n(1)Step(F10)n(2)Step in(F11)和)和Step out(shift+F11)n(3)Run/Continue(F5)n(4)Set/Clear Breakpoints(F12)n(5)Set/Modify Conditional Breakpointn(6)Stop if Errors/Warningsn(7)Exit Debug Mode5.5 匿名函数、匿名函数、inline对象和函数句柄对象和函数句柄5.5.1 匿名函数匿名函数n匿名函数是面向命令行代码的函数形式,通常只有匿名函数是面向命令行代码的函数形式,通常只有一句很简单的语句。一句很简单的语句。nfh
48、andle=(arg1,arg2,.)(expr) %创建匿名函数创建匿名函数n说明:说明:fhandle是函数句柄;是函数句柄;arg1,arg2,.是参数列是参数列表,也可以省略;表,也可以省略;expr是函数表达式。是函数表达式。n例:例:5-16n fhnd1=(x)(1+exp(-x); %创建匿名函数创建匿名函数n rf1=fhnd1(2) %调用匿名函数调用匿名函数nrf1 =n 1.13535.5.2 inline对象n创建创建inline对象就是使用对象就是使用inline函数将字符串转换成函数将字符串转换成inline对象。对象。ninline_fun=inline(str
49、ing,arg1,arg2,) %创建创建inline对象对象n例:例:5-17n f=inline(sin(x)*exp(-z*x),x,z) %创建创建inline对象对象fn class(f) %查看查看f的类型的类型nans =ninlinen y1=f(1,2) %调用调用inline对象对象fny1 =n 0.1139n y2=feval(f,1,2)ny2 =n 0.11395.5.3 函数句柄函数句柄n函数句柄(函数句柄(Function_Handle)包含了函数的路径、函数名、)包含了函数的路径、函数名、类型以及可能存在的重载方法,类型以及可能存在的重载方法,即函数是否为内部
50、函数、即函数是否为内部函数、M或或P文件、子函数、私有函数等文件、子函数、私有函数等。n1. 创建函数句柄创建函数句柄nfhandle=fun %创建函数句柄创建函数句柄n2. 函数句柄的调用函数句柄的调用ny1,y2,=fhandle(arg1,arg2) %调用函数句柄调用函数句柄fhandleny1,y2,=feval(fhandle,arg1,arg2)ny1,y2,=feval(fun,arg1,arg2)5.6 函数绘图5.6.1 fplot命令nfplot命令可以绘制函数的曲线。命令可以绘制函数的曲线。 nfplot(fun,limits,tol,Linespec) %绘制函数绘
51、制函数fun的曲线的曲线nfplot(fun,limits,n)n说明:说明:fun是函数句柄或函数名;是函数句柄或函数名;limits是自变量的取值范围是自变量的取值范围xmin xmax或或xmin xmax ymin ymax;tol是相对误差度,是相对误差度,默认为默认为2e-3,可省略;,可省略;Linespec是线型,与是线型,与plot命令的设置相命令的设置相同,可省略;同,可省略;n是绘制的点数,当是绘制的点数,当n1时至少绘制时至少绘制n+1个点。个点。n例:例:n fhnd=(x)(exp(-x).*sin(x);n fplot(fhnd,0 20,b-.*)5.6.2 e
52、zplot命令nezplot命令也是用于绘制函数在某一自变量区域命令也是用于绘制函数在某一自变量区域内的图形,内的图形,ezplot命令格式如下:命令格式如下:nezplot(fun,min,max) %绘制函数绘制函数fun的曲线的曲线nezplot(x,y,tmin,tmax)n说明:说明:fun是函数句柄或函数名;是函数句柄或函数名;min,max是自是自变量的范围,可省略,省略时默认为变量的范围,可省略,省略时默认为-2*pi ,2*pi,当当fun是二元函数,则范围是是二元函数,则范围是xmin xmax ymin ymax;x和和y是指是指x(t)和和y(t);tmin,tmax是是t的范的范围,可省略,省略时范围是围,可省略,省略时范围是0,2*pi。n例:例: ezplot(x2+y2-1,-3,3,-3,3) 5.7 数值分析数值分析5.7.1 求最小值和过零点求最小值和过零点n1. 一元函数的最小值一元函数的最小值nfminbnd函数可以获得一元函数在给定区间内的最函数可以获得一元函数在给定区间内的最小值。小值。nx=fminbnd(fun,x1,x2) %寻找最小值寻找最小值n2. 多元函数的最小值多元函数的最小值nfminsearch函数可以获得多元函数的最小值。函数可以获得多元函数的最小
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目合作联盟协议书
- 上海市店面转租协议书
- 酒店资产收购协议书
- 邻居建房责任协议书
- 车间职工劳动协议书
- 非标产品寄售协议书
- 返校就读安全协议书
- 转让商铺经营协议书
- 车祸自行赔偿协议书
- 铺面场地出租协议书
- 国开2025年《中华民族共同体概论》形考作业1-4终考答案
- 2025贵州省专业技术人员继续教育公需科目考试题库(2025公需课课程)
- 医院药物临床试验伦理委员会伦理审查申请及受理表
- 2021译林版高中英语选择性必修三课文翻译
- 智能网联汽车线控技术课件
- 郑州大学ppt模板
- (完整版)ECRS培训课件
- 第1本书出体旅程journeys out of the body精教版2003版
- 塑料制品事业部独立核算体系文件
- 《鸿门宴》话剧剧本
- 灸法操作规程完整
评论
0/150
提交评论