一、函数文件的基本结构
函数文件由 function 语句引导,其基本结构 为:function 输出形参表 = 函数名 ( 输入形参表 )注释说明部分函数体语句其中以 function 开头的一行为引导行,表示该 M 文件是一个函数文件。函数名的命名规则 与变量名相同。输入形参为函数的输入参 数,输出形参为函数的输出参数。当输出 形参多于一个时,则应该用 方括号 括起来。
例
3-14
编写函数文件求半径为
r
的圆的面积
和周长。
函数文件如下:
function [s,p]=fcircle(r)
%CIRCLE calculate the area and perimeter
of a circle of radii r
%r 圆半径
%s 圆面积
%p 圆周长
%2004年
7
月30日编
s=pi*r*r;
p=2*pi*r;
二、函数调用
函数调用的一般格式是:[ 输出实参表 ]= 函数名 ( 输入实参表 )要注意的是,函数调用时各实参出现 的顺序、个数,应与函数定义时形参 的顺序、个数一致,否则会出错。函 数调用时,先将实参传递给相应的形 参,从而实现参数传递,然后再执行 函数的功能。
例
3-15
利用函数文件,实现直角坐标
(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
在MATLAB 中,函数可以 嵌套调用 ,即一个函数 可以调用别的函数,甚至调用它自身。一个函数调用它自身称为函数的 递归调用 。
运行结果 :
例
3-16
利用函数的递归调用,求
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 和 nargout 分别记录调用该 函数时的输入实参和输出实参的个数。 只要在函数文件中包含这两个变量, 就可以准确地知道该函数文件被调用 时的输入输出参数个数,从而决定函 数如何进行处理。
例
3-17 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
命令文件
mydemo.m
:
x=[1:3];
y=[1;2;3];
examp(x)
examp(x,y')
examp(x,y,3)
运行结果 :
四、全局变量与局部变量
全局变量用
global
命令定义,格式为:
global
变量名
例
3-18
全局变量应用示例。
先建立函数文件
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)
结语
合理安排时间
就等于节约时间
!!!