《Matlab编程》PPT课件.ppt
1计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真计 算算 机机 仿仿 真真第四章第四章MatLab 程序程序设计计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真2 目目标:了解了解MATLABMATLAB,能,能够熟熟练掌握数掌握数学(矩学(矩阵)运算,)运算,简单编程,程,简单的的数据数据处理及基本理及基本图形形绘制。制。教材:教材:特点:特点:完全不必具完全不必具备其它其它语言的基言的基础,各年各年级各各专业。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真3目目 录4.1 Matlab程序控制(for(for、whilewhile循循环环,if-else-endif-else-end、switch-caseswitch-case分枝,分枝,try-catchtry-catch容容错错指令、交互指令指令、交互指令)4.2 M脚本文件和M函数文件4.3 变量的检测传递和子函数4.4 串演算函数(eval、feval、内联函数)4.5 函数句柄4.6 符号计算计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真41 1数据的数据的数据的数据的输输入入入入 从从从从键盘输键盘输入数据,入数据,入数据,入数据,则则可以使用可以使用可以使用可以使用inputinput函数来函数来函数来函数来进进行,行,行,行,该该函数的函数的函数的函数的调调用格式用格式用格式用格式为为:A=input(A=input(提示信息,提示信息,提示信息,提示信息,选项选项);其中提示信息其中提示信息其中提示信息其中提示信息为为一个字符串,用于提示用一个字符串,用于提示用一个字符串,用于提示用一个字符串,用于提示用户输户输入什么入什么入什么入什么样样的的的的数据。数据。数据。数据。如果在如果在如果在如果在inputinput函数函数函数函数调调用用用用时时采用采用采用采用ss选项选项,则则允允允允许许用用用用户输户输入一个入一个入一个入一个字符串。例如,想字符串。例如,想字符串。例如,想字符串。例如,想输输入一个人的姓名,可采用命令:入一个人的姓名,可采用命令:入一个人的姓名,可采用命令:入一个人的姓名,可采用命令:xm=input(Whats your name?,s);xm=input(Whats your name?,s);4.1 程序控制程序控制结构构4.1.1 顺序序结构构计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真52数据的数据的输出出 MATLAB提供的命令窗口提供的命令窗口输出函数主要有出函数主要有disp函数,其函数,其调用格式用格式为 disp(输出出项)其中其中输出出项既可以既可以为字符串,也可以字符串,也可以为矩矩阵。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真6 例例例例4-14-1 输输入入入入x,yx,y的的的的值值,并将它,并将它,并将它,并将它们们的的的的值值互互互互换换后后后后输输出。出。出。出。程序如下:程序如下:程序如下:程序如下:x=input(Input x please.);x=input(Input x please.);y=input(Input y please.);y=input(Input y please.);z=x;z=x;x=y;x=y;y=z;y=z;disp(x);disp(x);disp(y);disp(y);例例4-1计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真7例例4-2 求一元二次方程求一元二次方程ax2+bx+c=0的根。的根。程序如下:程序如下:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);例例4-2计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真83程序的程序的暂停停 暂停程序的停程序的执行可以使用行可以使用pause函数,其函数,其调用格式用格式为:pause(延延迟秒数秒数)如果如果省略省略延延迟时间,直接使用,直接使用pause,则将将暂停程序,直到用停程序,直到用户按任一按任一键后程序后程序继续执行。行。若要若要强行中止程序的运行可使用行中止程序的运行可使用Ctrl+C命命令。令。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真94.1.2 选择结构构1if语句句 在在MATLAB中,中,if语句有句有3种格式。种格式。(1)单分支分支if语句:句:if 条件条件 语句句组 end 当条件成立当条件成立时,则执行行语句句组,执行完之行完之后后继续执行行if语句的后句的后继语句,若条件不成立,句,若条件不成立,则直接直接执行行if语句的后句的后继语句。句。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真10 (2)双分支双分支if语句:句:if 条件条件 语句句组1 else 语句句组2 end 当条件成立当条件成立时,执行行语句句组1,否,否则执行行语句句组2,语句句组1或或语句句组2执行后,再行后,再执行行if语句句的后的后继语句。句。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真11例例4-3 计算分段函数的算分段函数的值。程序如下:程序如下:x=input(请输入入x的的值:);if x=A&c=A&c=a&c=a&c=0&c=0&c=9 disp(abs(c)-abs(0);disp(abs(c)-abs(0);elseelse disp(c);disp(c);endend例例4-4计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真14 switch switch switch switch语语句根据表达式的取句根据表达式的取句根据表达式的取句根据表达式的取值值不同,分不同,分不同,分不同,分别执别执行不同的行不同的行不同的行不同的语语句,其句,其句,其句,其语语句格式句格式句格式句格式为为:switch switch switch switch 表达式表达式表达式表达式 case case case case 表达式表达式表达式表达式1 1 1 1 语语句句句句组组1 1 1 1 case case case case 表达式表达式表达式表达式2 2 2 2 语语句句句句组组2 2 2 2 case case case case 表达式表达式表达式表达式m m m m 语语句句句句组组m m m m otherwise otherwise otherwise otherwise 语语句句句句组组n n n n end end end end2switch语句句当表达式的当表达式的当表达式的当表达式的值值等于表达式等于表达式等于表达式等于表达式1 1 1 1的的的的值时值时,执执行行行行语语句句句句组组1;1;1;1;当表达式的当表达式的当表达式的当表达式的值值等于表达式等于表达式等于表达式等于表达式2 2 2 2的的的的值时值时,执执行行行行语语句句句句组组2 2 2 2,;当表达式的当表达式的当表达式的当表达式的值值等于表达式等于表达式等于表达式等于表达式m m m m的的的的值时值时,执执行行行行语语句句句句组组m;m;m;m;当表达式的当表达式的当表达式的当表达式的值值不等于不等于不等于不等于casecasecasecase所列的所列的所列的所列的表达式的表达式的表达式的表达式的值时值时,执执行行行行语语句句句句组组n n n n。任意一个分支的任意一个分支的任意一个分支的任意一个分支的语语句句句句执执行完后,行完后,行完后,行完后,直接直接直接直接执执行行行行switchswitchswitchswitch语语句的下一句。句的下一句。句的下一句。句的下一句。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真15例例例例4-54-5 某商某商某商某商场对顾场对顾客所客所客所客所购买购买的商品的商品的商品的商品实实行打折行打折行打折行打折销销售,售,售,售,标标准如下准如下准如下准如下(商品价格用商品价格用商品价格用商品价格用priceprice来表示来表示来表示来表示):price200 price200 没有折扣没有折扣没有折扣没有折扣 200price500 3%200price500 3%折扣折扣折扣折扣 500price1000 5%500price1000 5%折扣折扣折扣折扣 1000price2500 8%1000price2500 8%折扣折扣折扣折扣 2500price5000 10%2500price 0)if(cnt 0)sum sum mean=sum/cnt mean=sum/cntendend例例4-11计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真303 3breakbreak语语句和句和句和句和continuecontinue语语句句句句与循与循与循与循环结环结构相关的构相关的构相关的构相关的语语句句句句还还有有有有breakbreak语语句和句和句和句和continuecontinue语语句。它句。它句。它句。它们们一般与一般与一般与一般与if if语语句配合使用。句配合使用。句配合使用。句配合使用。breakbreak语语句用于句用于句用于句用于终终止循止循止循止循环环的的的的执执行。当在循行。当在循行。当在循行。当在循环环体体体体内内内内执执行到行到行到行到该语该语句句句句时时,程序将跳出循,程序将跳出循,程序将跳出循,程序将跳出循环环,继续执继续执行循行循行循行循环语环语句的下一句的下一句的下一句的下一语语句。句。句。句。continuecontinue语语句控制跳句控制跳句控制跳句控制跳过过循循循循环环体中的某些体中的某些体中的某些体中的某些语语句。句。句。句。当在循当在循当在循当在循环环体内体内体内体内执执行到行到行到行到该语该语句句句句时时,程序将跳,程序将跳,程序将跳,程序将跳过过循循循循环环体中所有剩下的体中所有剩下的体中所有剩下的体中所有剩下的语语句,句,句,句,继续继续下一次循下一次循下一次循下一次循环环。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真31例例例例4-124-12 求求求求100100,200200之之之之间间第一个能被第一个能被第一个能被第一个能被2121整除的整数。整除的整数。整除的整数。整除的整数。程程程程序如下:序如下:序如下:序如下:for n=100:200for n=100:200 if rem(n,21)=0 if rem(n,21)=0 continue continue end end disp(n)disp(n)break breakendendn n例例4-12计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真324 4循循环的嵌套的嵌套 如果一个循如果一个循环结构的循构的循环体又包括一个体又包括一个循循环结构,就称构,就称为循循环的嵌套,或称的嵌套,或称为多多重循重循环结构。构。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真33 例例例例4-134-13 若一个数等于它的各个真因子之和,若一个数等于它的各个真因子之和,若一个数等于它的各个真因子之和,若一个数等于它的各个真因子之和,则则称称称称该该数数数数为为完完完完数,如数,如数,如数,如6=1+2+36=1+2+3,所以,所以,所以,所以6 6是完数。求是完数。求是完数。求是完数。求2,5002,500之之之之间间的全部完数。的全部完数。的全部完数。的全部完数。for m=2:500for m=2:500 s=0;s=0;for k=1:m/2 for k=1:m/2 if rem(m,k)=0 if rem(m,k)=0 s=s+k;s=s+k;end end end end if m=s if m=s disp(m);disp(m);end endendend#include#include int main()int main()int a,i,m;int a,i,m;/*/*循循循循环环控制控制控制控制选选取取取取25002500中的各数中的各数中的各数中的各数进进行判断行判断行判断行判断*/for(a=2;a500;a+)for(a=2;a500;a+)/*/*计计算算算算a a的因子,并将各因子之和的因子,并将各因子之和的因子,并将各因子之和的因子,并将各因子之和m=am=a,*/*/*则则a a是完全数是完全数是完全数是完全数输输出出出出*/for(m=0,i=1;i=a/2;i+)for(m=0,i=1;i save x y save x y load%load%或者或者或者或者load bload b例例例例:load gatlin%gatlinload gatlin%gatlin为为文件名,如文件名,如文件名,如文件名,如womanwoman image(X);Colormap(gray)image(X);Colormap(gray)计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真382).m2).m2).m2).m文件文件文件文件 m m m m文件的文件的文件的文件的语语法法法法类类似于似于似于似于c c c c语语言,但又有其自身特点。言,但又有其自身特点。言,但又有其自身特点。言,但又有其自身特点。它只是一个它只是一个它只是一个它只是一个简单简单的的的的ASCIIASCIIASCIIASCII码码文本文件,文本文件,文本文件,文本文件,执执行程序行程序行程序行程序时时逐逐逐逐行解行解行解行解释释运行程序,运行程序,运行程序,运行程序,matlabmatlabmatlabmatlab是解是解是解是解释释性的性的性的性的编编程程程程语语言。言。言。言。m m m m文件有两文件有两文件有两文件有两类类独立的独立的独立的独立的m m m m文件文件文件文件 称命令文件称命令文件称命令文件称命令文件 可可可可调调用用用用m m m m文件文件文件文件 称函数文件称函数文件称函数文件称函数文件(1).(1).(1).(1).命令文件命令文件命令文件命令文件 简单简单的的的的m m m m文件文件文件文件 命令文件命令文件命令文件命令文件实际实际上是一串指令的集合,与在命令窗上是一串指令的集合,与在命令窗上是一串指令的集合,与在命令窗上是一串指令的集合,与在命令窗口逐行口逐行口逐行口逐行执执行文件中的所有指令,其行文件中的所有指令,其行文件中的所有指令,其行文件中的所有指令,其结结果是一果是一果是一果是一样样的。的。的。的。没有没有没有没有输输入入入入输输出参数。出参数。出参数。出参数。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真39命令文件包括两部分:注命令文件包括两部分:注命令文件包括两部分:注命令文件包括两部分:注释释文件和程序文件文件和程序文件文件和程序文件文件和程序文件%RANK%RANKNumber of linearly independent rows or columns.Number of linearly independent rows or columns.%K=RANK(X)is the number of singular values of XK=RANK(X)is the number of singular values of X%that are larger than MAX(SIZE(X)*NORM(X)*EPS.that are larger than MAX(SIZE(X)*NORM(X)*EPS.%K=RANK(X,tol)is the number of singular values of X thatK=RANK(X,tol)is the number of singular values of X that%are larger than tol.are larger than tol.%Copyright(c)1984-94 by The MathWorks,Inc.Copyright(c)1984-94 by The MathWorks,Inc.s=svd(x);s=svd(x);if(nargin=1)if(nargin=1)tol=max(size(x)*max(s)*eps;tol=max(size(x)*max(s)*eps;endendr=sum(s tol);r=sum(s tol);程序部分计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真403).matlab3).matlab3).matlab3).matlab内置函数文件内置函数文件内置函数文件内置函数文件 matlabmatlabmatlabmatlab自定自定自定自定义义的函数文件称内置函数文件的函数文件称内置函数文件的函数文件称内置函数文件的函数文件称内置函数文件 调调用内置函数的方法:使用函数名并用内置函数的方法:使用函数名并用内置函数的方法:使用函数名并用内置函数的方法:使用函数名并给给出相出相出相出相应应的的的的入口、出口参数即可。入口、出口参数即可。入口、出口参数即可。入口、出口参数即可。例如:函数例如:函数例如:函数例如:函数用用用用type sintype sintype sintype sin查查不到。不到。不到。不到。调调用格式:用格式:用格式:用格式:y=sin(2*x)y=sin(2*x)y=sin(2*x)y=sin(2*x)实际应实际应用中:用中:用中:用中:x=0:2*pi/180:2*pi;x=0:2*pi/180:2*pi;x=0:2*pi/180:2*pi;x=0:2*pi/180:2*pi;y=sin(2*x)y=sin(2*x)y=sin(2*x)y=sin(2*x)plot(x,y)plot(x,y)plot(x,y)plot(x,y)计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真41 在条件表达式中,通常都是由在条件表达式中,通常都是由在条件表达式中,通常都是由在条件表达式中,通常都是由 关系操作符关系操作符关系操作符关系操作符 ,=,=,=,=,=,=,=,=,=,=,=,=等等等等 逻辑逻辑操作符操作符操作符操作符&,|,等等等等 逻辑逻辑函数:函数:函数:函数:isequal isequal isequal isequal 若是相等若是相等若是相等若是相等则为则为真真真真 isempty isempty isempty isempty 若是空矩若是空矩若是空矩若是空矩阵则为阵则为真真真真 isstr isstr isstr isstr 若是字符串若是字符串若是字符串若是字符串则为则为真真真真例:例:例:例:编编写写写写m m m m函数,函数,函数,函数,计计算函数算函数算函数算函数值值 x (x1)x (x1)x (x1)x (x1)2x-1 (1x10)2x-1 (1x10)2x-1 (1x10)2x-1 (1x=10)3x-11 (x=10)3x-11 (x=10)3x-11 (x=10)计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真42 MM文件是一个文本文件,它可以用任何文件是一个文本文件,它可以用任何文件是一个文本文件,它可以用任何文件是一个文本文件,它可以用任何编辑编辑程序来建立和程序来建立和程序来建立和程序来建立和编辑编辑,而一般常用且最而一般常用且最而一般常用且最而一般常用且最为为方便的是使用方便的是使用方便的是使用方便的是使用MATLABMATLAB提供的文本提供的文本提供的文本提供的文本编辑编辑器。器。器。器。1 1建立新的建立新的建立新的建立新的MM文件文件文件文件 为为建立新的建立新的建立新的建立新的MM文件,启文件,启文件,启文件,启动动MATLABMATLAB文本文本文本文本编辑编辑器有器有器有器有3 3种方法:种方法:种方法:种方法:(1)(1)菜菜菜菜单单操作。从操作。从操作。从操作。从MATLABMATLAB主窗口的主窗口的主窗口的主窗口的FileFile菜菜菜菜单单中中中中选择选择NewNew菜菜菜菜单项单项,再再再再选择选择M-fileM-file命令,屏幕上将出命令,屏幕上将出命令,屏幕上将出命令,屏幕上将出现现MATLAB MATLAB 文本文本文本文本编辑编辑器窗口。器窗口。器窗口。器窗口。(2)(2)命令操作。在命令操作。在命令操作。在命令操作。在MATLABMATLAB命令窗口命令窗口命令窗口命令窗口输输入命令入命令入命令入命令editedit,启,启,启,启动动MATLABMATLAB文本文本文本文本编辑编辑器后,器后,器后,器后,输输入入入入MM文件的内容并存文件的内容并存文件的内容并存文件的内容并存盘盘。(3)(3)命令按命令按命令按命令按钮钮操作。操作。操作。操作。单击单击MATLABMATLAB主窗口工具主窗口工具主窗口工具主窗口工具栏栏上的上的上的上的New M-FileNew M-File命令按命令按命令按命令按钮钮,启,启,启,启动动MATLABMATLAB文本文本文本文本编辑编辑器后,器后,器后,器后,输输入入入入MM文件的内容并文件的内容并文件的内容并文件的内容并存存存存盘盘。4.2.2 M文件的建立与打开文件的建立与打开计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真432 2 2 2打开已有的打开已有的打开已有的打开已有的M M M M文件文件文件文件 打开已有的打开已有的打开已有的打开已有的M M M M文件,也有文件,也有文件,也有文件,也有3 3 3 3种方法:种方法:种方法:种方法:(1)(1)(1)(1)菜菜菜菜单单操作。从操作。从操作。从操作。从MATLABMATLABMATLABMATLAB主窗口的主窗口的主窗口的主窗口的FileFileFileFile菜菜菜菜单单中中中中选择选择OpenOpenOpenOpen命令,命令,命令,命令,则则屏幕出屏幕出屏幕出屏幕出现现OpenOpenOpenOpen对话对话框,在框,在框,在框,在OpenOpenOpenOpen对话对话框中框中框中框中选选中所需中所需中所需中所需打开的打开的打开的打开的M M M M文件。在文档窗口可以文件。在文档窗口可以文件。在文档窗口可以文件。在文档窗口可以对对打开的打开的打开的打开的M M M M文件文件文件文件进进行行行行编辑编辑修修修修改,改,改,改,编辑编辑完成后,将完成后,将完成后,将完成后,将M M M M文件存文件存文件存文件存盘盘。(2)(2)(2)(2)命令操作。在命令操作。在命令操作。在命令操作。在MATLABMATLABMATLABMATLAB命令窗口命令窗口命令窗口命令窗口输输入命令:入命令:入命令:入命令:edit edit edit edit 文文文文件名件名件名件名,则则打开指定的打开指定的打开指定的打开指定的M M M M文件。文件。文件。文件。(3)(3)(3)(3)命令按命令按命令按命令按钮钮操作。操作。操作。操作。单击单击MATLABMATLABMATLABMATLAB主窗口工具主窗口工具主窗口工具主窗口工具栏栏上的上的上的上的Open Open Open Open FileFileFileFile命令按命令按命令按命令按钮钮,再从,再从,再从,再从弹弹出的出的出的出的对话对话框中框中框中框中选择选择所需打开的所需打开的所需打开的所需打开的M M M M文文文文件。件。件。件。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真441 函数文件的基本函数文件的基本结构构 函数文件由函数文件由function语句引句引导,其基本,其基本结构构为:function 输出形参表出形参表=函数名函数名(输入形参表入形参表)注注释说明部分明部分 函数体函数体语句句 其中以其中以function开开头的一行的一行为引引导行,表示行,表示该M文件是一个函数文件。函数名的命名文件是一个函数文件。函数名的命名规则与与变量名相同。量名相同。输入形参入形参为函数的函数的输入参数,入参数,输出出形参形参为函数的函数的输出参数。出参数。当当输出形参多于一个出形参多于一个时,则应该用方括号括起来用方括号括起来。4.2.3 M函数文件函数文件计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真45例例例例4-144-14 编编写函数文件求半径写函数文件求半径写函数文件求半径写函数文件求半径为为r r的的的的圆圆的面的面的面的面积积和周和周和周和周长长。函数文件如下:函数文件如下:函数文件如下:函数文件如下:function s,p=fcircle(r)function s,p=fcircle(r)%CIRCLE calculate the area and perimeter of a%CIRCLE calculate the area and perimeter of a circle of radii rcircle of radii r%r%r 圆圆半径半径半径半径%s%s 圆圆面面面面积积%p%p 圆圆周周周周长长s=pi*r*r;s=pi*r*r;p=2*pi*r;p=2*pi*r;例例fcircle计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真462 函数函数调用用函数函数调用的一般格式是:用的一般格式是:输出出实参表参表=函数名函数名(输入入实参表参表)要注意的是,函数要注意的是,函数调用用时各各实参出参出现的的顺序、个数,序、个数,应与函数定与函数定义时形参的形参的顺序、个序、个数一致,否数一致,否则会出会出错。函数。函数调用用时,先将,先将实参参传递给相相应的形参,从而的形参,从而实现参数参数传递,然后再然后再执行函数的功能。行函数的功能。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真47 例例例例4-154-15 利用函数文件,利用函数文件,利用函数文件,利用函数文件,实现实现直角坐直角坐直角坐直角坐标标(x,y)(x,y)与极坐与极坐与极坐与极坐标标(,)(,)之之之之间间的的的的转换转换。函数文件:函数文件:函数文件:函数文件:function rho,theta=tran(x,y)function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);rho=sqrt(x*x+y*y);theta=atan(y/x);theta=atan(y/x);调调用的命令文件:用的命令文件:用的命令文件:用的命令文件:x=input(Please input x=:);x=input(Please input x=:);y=input(Please input y=:);y=input(Please input y=:);rho,the=tran(x,y);rho,the=tran(x,y);rhorhothethe 在在在在MATLABMATLAB中,函数可以嵌套中,函数可以嵌套中,函数可以嵌套中,函数可以嵌套调调用,即一个函数可以用,即一个函数可以用,即一个函数可以用,即一个函数可以调调用用用用别别的函数,甚至的函数,甚至的函数,甚至的函数,甚至调调用它自身。一个函数用它自身。一个函数用它自身。一个函数用它自身。一个函数调调用它自身称用它自身称用它自身称用它自身称为为函函函函数的数的数的数的递归调递归调用。用。用。用。例例4-15计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真48 例例例例4-164-16 利用函数的利用函数的利用函数的利用函数的递归调递归调用,求用,求用,求用,求n n!。!。!。!。n!n!本身就是以本身就是以本身就是以本身就是以递归递归的形式定的形式定的形式定的形式定义义的:的:的:的:显显然,求然,求然,求然,求n!n!需要求需要求需要求需要求(n-1)!(n-1)!,这时这时可采用可采用可采用可采用递归调递归调用。用。用。用。递归调递归调用函用函用函用函数文件如下:数文件如下:数文件如下:数文件如下:function f=factor(n)function f=factor(n)if n=1if n=1 f=1;f=1;elseelse f=factor(n-1)*n;%f=factor(n-1)*n;%递归调递归调用求用求用求用求(n-1)!(n-1)!endend例例4-16计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真493 函数参数的可函数参数的可调性性 在在调用函数用函数时,MATLAB用两个永久用两个永久变量量nargin和和nargout分分别记录调用用该函数函数时的的输入入实参和参和输出出实参的个数。只要在函数参的个数。只要在函数文件中包含文件中包含这两个两个变量,就可以准确地知量,就可以准确地知道道该函数文件被函数文件被调用用时的的输入入输出参数个出参数个数,从而决定函数如何数,从而决定函数如何进行行处理。理。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真50 例例例例4-174-17 nargin nargin用法示例。用法示例。用法示例。用法示例。函数文件:函数文件:函数文件:函数文件:function fout=charray(a,b,c)function fout=charray(a,b,c)if nargin=1if nargin=1 fout=a;fout=a;elseif nargin=2elseif nargin=2 fout=a+b;fout=a+b;elseif nargin=3elseif nargin=3 fout=(a*b*c)/2;fout=(a*b*c)/2;endend 命令文件:命令文件:命令文件:命令文件:x=1:3;x=1:3;y=1;2;3;y=1;2;3;charraycharray(x)(x)charraycharray(x,y)(x,y)charraycharray(x,y,3)(x,y,3)例例4-17计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真51全局全局全局全局变变量用量用量用量用globalglobal命令定命令定命令定命令定义义,格式,格式,格式,格式为为:global global 变变量名量名量名量名 例例例例4-184-18 全局全局全局全局变变量量量量应应用示例。用示例。用示例。用示例。先建立函数文件,先建立函数文件,先建立函数文件,先建立函数文件,该该函数将函数将函数将函数将输输入的参数加入的参数加入的参数加入的参数加权权相加。相加。相加。相加。function f=wadd(x,y)function f=wadd(x,y)global ALPHA BETAglobal ALPHA BETAf=ALPHA*x+BETA*y;f=ALPHA*x+BETA*y;在命令窗口中在命令窗口中在命令窗口中在命令窗口中输输入:入:入:入:global ALPHA BETAglobal ALPHA BETAALPHA=1;ALPHA=1;BETA=2;BETA=2;s=wadd(1,2)s=wadd(1,2)4 全局全局变量与局部量与局部变量量例例4-18计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真525 子函数子函数u 函数文件中可以含有一个或多个子函数函数文件中可以含有一个或多个子函数u 子函数由子函数由 function 语句引句引导u 主函数必主函数必须位于最前面,子函数出位于最前面,子函数出现的次序任意的次序任意u 子函数只能被主函数和位于同一个函数文件中的其子函数只能被主函数和位于同一个函数文件中的其它子函数它子函数调用用u 除了用除了用 global 定定义的全局的全局变量外,子函数中的量外,子函数中的变量量都是局部都是局部变量,子函数与主函数及其它子函数之量,子函数与主函数及其它子函数之间通通过输入、入、输出参数出参数进行数据行数据传递q 调用一个函数用一个函数时,Matlab 会首先会首先检查该函数是函数是否否为一个子函数。一个子函数。计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真53子函数子函数举例例function avg,med=main_fun(x)%主函数主函数 n=length(x);avg=sub_fun1(x,n);med=sub_fun2(x,n);function a=sub_fun1(x,n)%子函数子函数a=sum(x)/n;function m=sub_fun2(x,n)%子函数子函数x=sort(x);if rem(n,2)=1 m=x(n+1)/2);else m=(x(n/2)+x(n/2+1)/2;end计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真546 matlab程序流的控制程序流的控制 matlabmatlab的控制的控制的控制的控制语语句同句同句同句同c c语语言有相似之言有相似之言有相似之言有相似之处处,但没有但没有但没有但没有c c 语语言言言言复复复复杂杂、灵活和多、灵活和多、灵活和多、灵活和多变变。因而。因而。因而。因而语语法比法比法比法比较简单较简单,容易掌握。,容易掌握。,容易掌握。,容易掌握。echo echo 指令指令指令指令 用来控制用来控制用来控制用来控制mm文件在文件在文件在文件在执执行行行行过过程中是否程中是否程中是否程中是否显显示示示示(控制批控制批处处理命令在理命令在执执行行时时是否是否是否是否显显示命令行自身示命令行自身示命令行自身示命令行自身的开关的开关)echo on echo on 打开所有命令文件的打开所有命令文件的打开所有命令文件的打开所有命令文件的显显示方式示方式示方式示方式 echo off echo off 关关关关闭闭所有命令文件的所有命令文件的所有命令文件的所有命令文件的显显示方式示方式示方式示方式 echo echo 在以上两者在以上两者在以上两者在以上两者间间切切切切换换 计计计计计计 算算算算算算 机机机机机机 仿仿仿仿仿仿 真真真真真真55 echoecho对对于命令文件函数文件有所不同,命令文件用法于命令文件函数文件有所不同,命令文件用法于命令文件函数文件有所不同,命令文件用法于命令文件函数文件有所不同,命令文件用法简单简单,函数,函数,函数,函数对对所有命令起作用;函数文件用法所有命令起作用;函数文件用法所有命令起作用;函数文件用法所有命令起作用;函数文件用法较较复复复复杂杂,具体具体具体具体请请helphelp查询查询。echo file on echo file on 打开打开打开打开filefile函数文件的函数文件的函数文件的函数文件的显显示方式示方式示方式示方式 echo file off echo file off 关关关关闭闭filefile函数文件的函数文件的函数文件的函数文件的显显示方式示方式示方式示方式 echo file echo file 切切切切换换filefile函数文件的函数文件的函数文件的函数文件的显显示方式示方式示方式示方式 echo on all echo on all 打开所有函数文件的打开所有函数文件的打开所有函数文件的打开所有函数文件的显显示方式示方式示方式示方式 echo off all echo off all 关关关关闭闭所有函数文件的所有函数文件的所有函数文件的所有函数文件的显显示方式示方式示方式示方式计计计计计计 算算算算算算 机