- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11讲 函数与程序的调试 例1:编写函数文件求半径为 r 的圆的面积和周长。 函数文件如下: % calculate the area and perimeter of a circle of radii r function [s,p]=fcircle(r) % r — 圆半径, s — 圆面积, p — 圆周长 s=pi*r*r; p=2*pi*r; 11.1.2 函数调用 函数调用的一般格式是: [输出实参表]=函数名(输入实参表) 注意:函数调用时各实参出现的顺序和个数,应与函数定义时形参的顺序和个数一致,否则会出错。 函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。 在MATLAB中,函数可以嵌套调用,即函数可以调用别的函数,甚至调用它自身。一个函数调用它自身称为递归调用。 例2:利用函数文件,实现直角坐标(x, y)与极坐标(rho, theta)之间的转换。 函数文件tran.m: function [rho,theta]=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x); 调用tran.m的命令文件main1.m: x=input(Please input x=:); y=input(Please input y=:); [rho,the]=tran(x,y) 例3:利用函数的递归调用,求n!。 递归调用函数文件factor.m如下: function f=factor(n) if n=1 f=1; else f=factor(n-1)*n; %递归调用求(n-1)! end n!本身就是以递归的形式定义的,即求n!需要求(n-1)!,这时可采用递归调用。 本节完,谢谢!! * * * 本讲教学目标 掌握函数文件的基本结构 掌握Matlab函数的调用方法 了解函数参数的可调性 掌握函数的句柄和常用的程序调试方法 了解各种不同类型的函数 11.1 函数 11.1.1 函数文件基本结构 由function语句引导,其基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 函数名的命名规则与变量名相同。 输入形参为函数的输入参数,输出形参为函数的输出参数。 当输出形参多于一个时,则应该用方括号括起来。 11.1.3 函数参数的可调性 函数 nargin 和函数 nargout 分别用于确定函数的输入输出参数个数。 函数 nargin 和函数 nargout 允许函数接收或返回任意数目的参数。 只要在函数文件中包含这两个函数,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。 例4:nargin用法示例。 函数文件examp.m: function fout=charray(a,b,c) if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end 命令文件my.m: x=[1:3]; y=[1;2;3]; examp(x) examp(x,y) examp(x,y,3) 11.1.4 函数句柄 函数句柄可以实现对函数的间接操作,可以通过将函数句柄传递给其他函数实现对函数的操作,也可以将函数句柄保存在变量中,留待以后调用操作。 函数句柄的创建格式如下: fhandle=@functionname 其中fhandle为创建的函数functionname的函数句柄。 若要保存函数句柄,可以使用单元数组,如下: trigFun = {@sin, @cos, @tan}; 通过函数句柄实现对函数的间接调用,其调用格式与直接调用函数的格式相同: fhandle(arg1, arg2, ...
文档评论(0)