**function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句**
注:
1.function在开头第一行作为引导,表明这是一个函数文件。
2.当输出形参的个数大于一个时,输出形参表要用方括号括起来,即输出为向量。
一般来说,文件名是函数名加上.m后缀组成。不过文件名也可跟函数名不同,当函数名和文件名不同时,MATLAB会忽略函数名,确认文件名,此时在调用的时候应使用函数文件名。最好是函数文件名和函数名统一。
注释是为了更好的对函数文件的内容进行管理和更新,注释中主要是3部分,函数名称和功能,函数参数信息和调用信息,函数文件编写人员和日期。
①紧随函数文件引导行之后以%开头的第一注释行。这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助时使用。
②第一注释行及之后连续的注释行。通常包括函数输入/输出参数的含义及调用格式说明等信息,构成全部在线帮助文本。
③与在线帮助文本相隔一空行的注释行。包括函数文件编写和修改的信息,如作者、修改日期、版本等内容,用于软件档案管理。
例如:计算圆周长与面积函数
function [s,c]=circle(r)
%CIRCLE 功能:计算圆的面积和周长
%r 圆半径
%s 圆面积
%c 圆周长
%调用格式: [s,c]=circle(r)
%2020年7月7号 某某编 1.0版本
s=pi*r*r;
c=2*pi*r;
函数体语句跟命令行输入差不多,冒号作为终止,return有无皆可。
函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
%使用上面计算圆周长和面积的函数
[s,c]=circle(5)
%输出
s =
78.5398
c =
31.4159
各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。
函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。
在MATLAB中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身。一个函数调用它自身称为函数的递归调用。
例:阶乘计算
function f=factor(n)
%FACTOR 功能:阶乘计算
%f 阶乘计算输出值
%n 阶乘数
%调用格式: f=factor(n)
%2020年7月7号 某某编 1.0版本
if n<=1
f=1;
else
f=factor(n-1)*n; %递归调用求(n-1)!
end
>> f=factor(20)
f =
2.4329e+18
在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。
只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。
例:
function out=getmath(x,y,z)
%TYPE 功能:根据输入参数个数的不同,进行不同的计算
%out 计算结果输出
%x 第一个形参
%y 第二个形参
%z 第三个形参
%调用格式 out=type(x,y,z)
%2020.7.7 某某编写
if nargin==1
out=x;
elseif nargin==2
out=x/y;
elseif nargin==3
out=x*y*z;
end
>> out=getmath(6) %输入一个实参时
out =
6
>> out=getmath(5,6) %输入两个实参时
out =
0.8333
>> out=getmath(5,6,7) %输入三个实参时
out =
210
函数文件中的变量是局部变量,与其他函数文件及工作空间相互隔离。
全局变量的作用域是是工作空间,先在命令行窗口声明。若多个函数文件中都定义了相同的全局变量,则这个全局变量在这些函数中就是共用的,所有函数都能对它进行存取和修改。因此,定义全局变量是函数间传递信息的一种手段。
全局变量使用格式
global 变量名
例如
function factor(x,y)
%FACTOR 功能 例子测试
%x 形参1
%y 形参2
%调用方式 factor(x,y)
%2020.7.7
global ONEDATA %全局变量
ONEDATA=x*ONEDATA+y*ONEDATA
function ten(x)
%TEN 功能:乘10
%x 输入目标数字
%调用格式 ten(x)
%2020.7.7
global ONEDATA
ONEDATA=10*x
>> global ONEDATA
>> ten(5) %调用函数改变全局变量
ONEDATA =
50
>> factor(1,2) %调用函数改变全局变量
ONEDATA =
150
但是,对于全局变量还会不怎么提倡使用
原因:
1.破坏函数对变量的封装
2.降低程序的可读性