目录
想查找相关内容也可在页面按ctrl+F搜索文字
一、建立文件
新建脚本,保存后可运行,后缀为.m
二、函数调用
创建ffib.m文件,编写求Fibonacci数列的函数
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体
- 若输出参数仅有一个,则无须方括号;若有多个输出参数,则用逗号分隔。
- 在Matlab中的主函数名必须与M文件名相同,并且函数对变量的操作是在函数体内(专用的函数工作空间),而非工作空间。这与脚本文件大不一样
- 其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。
- 函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。事实上,MATLAB提供的标准函数大部分都是由函数文件定义的
- 函数的定义行(必须有)----关键字function申明以下为函数定义
- 函数体----函数体是函数的主体部分,它可包括各种MATLAB语句,还可包括函数调用和脚本调用。
function f=ffib(n)
%用于求Fibonacci数列的函数文件
%f=ffib(n)
%2019年7月8日编
f=[1,1];
i=1;
while f(i)+f(i+1)<n
f(i+2)=f(i)+f(i+1);
i=i+1;
end
>> ffib(200)
ans =
1 至 12 列
1 1 2 3 5 8 13 21 34 55 89 144
创建的如果为函数文件,则文件样式改变普通运行文件样式为:
三、函数句柄
- 函数句柄(Function handle)是一种数据类型,它保存着“为该函数创建句柄时的路径、视野、函数名以及可能存在的重载方法”。它可使"函数调用"像"变量调用"一样灵活方便,提高调用速度,提高软件重用性。
- 函数句柄必须通过专门定义才会生成。定义句柄方法有两种:利用@符号,或利用转换函数str2func。
- 函数句柄演算指令feval的使用方式
[y1,y2,...]=feval(Fhandle,arg1,arg2,…)
[y1,y2,…]=feval('Fname',arg1,arg2,…)
示例1:
函数定义
函数调用:
>> t=funf(@fund,[1,2,3],[3,2,1])
t =
64
>> t=funf(@func,[1,2,3],[3,2,1])
t =
10
示例2:
函数定义
function f = myfunf(x,a)
f = (x - a)^2;
函数调用
>> x = fminbnd(@(x)myfunf(x,1.5),0,1)
x =
0.9999
四、匿名函数
- 匿名函数:直接将函数关系以函数句柄方式存储在变量中;定义格式:fhandle=@(arglist) expr
- •单重匿名函数示例:
f=@(x,a,b) a*x.^2+b; % 匿名函数定义
x=1:5 , y=f(x,2,-1) % 匿名函数调用
- 多重匿名函数:由两个以上@(arglist)符号引导的表达式所定义的函数;每层@后紧跟的变量表的作用域直至表达式结尾。
- 二重匿名函数示例:
f=@(a,b) @(x) a*x.^2+b
f23=f(2,3)
f23v=f23(1:5)
示例:
已知在[0,u]区间上的数值积分值,求解u=?
sol=fzero(@(u) 0.99*pi/2-quad(@(x) sin(x).^2./x.^2,0,u),1)
- 处理通过多个返回参数返回函数结果可用deal(X1,X2,...)函数
fun=@(x) deal([2*x(1)-1;x(1)+x(2)],2*x.^2-1)
[a,b]=fun(1:5)