- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 函数
5.1 函数文件
5.2 文件的操作
5.3 INLINE与FEVAL函数
5.4 MATLAB函数示例
§5.1 函数文件
一、函数文件的基本结构
函数文件由function语句引导,其基本结构为:
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。
例:编写函数文件求半径为r的圆的面积和周长。函数文件如下:
function [s,p]=fcircle(r)
%CIRCLE calculate the area and perimeter of a circle of radii r
%r 圆半径
%s 圆面积
%p 圆周长
s=pi*r*r;
p=2*pi*r;
函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。
二、函数调用
例: 利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。
函数文件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);
rho
the
运行结果:
Please input x=:7
Please input y=:8
rho =
10.6301
the =
0.8520
在MATLAB中,函数可以嵌
套调用,即一个函数可以调用别
的函数,甚至调用它自身。一个
函数调用它自身称为函数的递归
调用。
例:利用函数的递归调用,求n!。
n!本身就是以递归的形式定义的,显然,求n!需要求(n-1)!,
这时可采用递归调用。递归调用函数文件factor.m如下:
function f=factor(n)
if n=1
f=1;
else
f=factor(n-1)*n; %递归调用求(n-1)!
end
在调用函数时,MATLAB用两个永久变量nargin和nar-gout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。
三、函数参数的可调性
例: nargin用法示例。
函数文件examp.m:
function fout=examp(a,b,c)
if nargin==1
fout=a;
elseif nargin==2
fout=a+b;
elseif nargin==3
fout=(a*b*c)/2;
end
命令文件mydemo.m:
x=[1:3];
y=[1;2;3];
examp(x)
examp(x,y)
examp(x,y,3)
运行结果:
ans =
1 2 3
ans =
2 4 6
ans =
21
在MATLAB中, 函数文件是能够创建局部独立空间的程序文件。在函数内定义的所有变量名对函数而言是局部的, 既不影响其他程序文件和函数文件中同样的变量名又不被其所影响. 所有的MATLAB内置函数都是这种类型。当然在MATLAB中可以定义全局变量。
全局变量用global命令定义,格式为:
global 变量名
四、全局变量与局部变量
例: 全局变量应用示例。
先建立函数文件wadd.m,该函数将输入的参数加权相加。
function f=wadd(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;
在命令窗口中输入:
global ALPHA BETA
ALPHA=1;
BETA=2;
s=wadd(1,2)
运算结果:
global ALPHA BETA
ALPHA=1;
BETA=2;
s=wadd(1,2)
s =
文档评论(0)