MATLAB匿名函数
匿名函数的基本定义
fhandle=@(arglist)expr
其中,expr是具体的函数表达式,arglist是指定的函数⾃变量。具体请见下⾯⽰例
f=@(x)x.^2;
>> fx=f(1:10)
fx =
1    4    9    16    25    36    49    64    81  100
>> g=@(x,y)x.^2+y.^2;
>> gxy=g(1:10,2:11)
gxy =
5    13    25    41    61    85  113  145  181  221
匿名函数的种类
1. 单变量匿名函数
单变量匿名函数是最简单的匿名函数,只含有⼀个⾃变量
f=@(x)x.^2
就是单变量匿名函数,除此以外,含有参数,参数值已知的单个⾃变量的匿名函数也是单匿名函数,譬如
>> f(1:5)
ans =
30    40    50    60    70
2. 多变量匿名函数
多变量函数匿名含有两个或两个以上的⾃变量,如
g=@(x,y)x.^2+y.^2;
同单变量匿名函数⼀样,多变量函数也可以有已知的参数值。譬如
a=1;b=2;
g=@(x,y)a*x+y.^b;
g(1:5,1:5)
ans =
2    6    12    20    30matlab定义函数表达式
3. 单重匿名函数
到⽬前为⽌,上⾯列的匿名函数,⽆论是单变量匿名函数还是多变量匿名函数,都属于单重匿名函数。单重匿名函数的特点是:只有⼀
个“@”符号引导,“@”符号只会就是具体的函数表达数。⾃变量输⼊单重匿名函数后,得到的是具体的数值。除了单重匿名函数以外,还有⼆重、乃⾄多重匿名函数。这些多重匿名函数在参数传递⽅⾯⾮
常⽅便。
4. 多重匿名函数
下⾯以⼆重函数为例来介绍多重匿名函数。
f=@(a,b)@(x)a*x+b;
其中“a,b”是外层变量,“x”是内层变量。可以这样理解这个表达式:每个“@”符号后⾯的括号的变量的作⽤域⼀直到表达式的结尾。这样,“a,b”的作⽤域就是“@(x)a*x+b”,“x”的作⽤域就是“a*x+b”。因此,对于给定的“a,b”,“gab=f(a,b)”是⼀个单层以x为变量的单变量匿名函数。
可以利⽤functions函数观察建⽴的匿名函数信息,以下
f=@(a,b)@(x)a*x+b
f =
包含以下值的 function_handle:
@(a,b)@(x)a*x+b
>> f23=f(2,3)
f23 =
包含以下值的 function_handle:
@(x)a*x+b
>> f23info=functions(f23)
f23info =
包含以下字段的 struct:
function: '@(x)a*x+b'
type: 'anonymous'
file: 'D:\⼯作⽂件夹\匿名函数\anonymous3.m'
workspace: {[1×1 struct]}
within_file_path: 'anonymous3'
>> f23info.workspace{1}
ans =
包含以下字段的 struct:
a: 2
b: 3
两重以上的匿名函数可以参考⼆重匿名函数类推,譬如:
>> f=@(a)@(b,c)@(x)x^a+b*c
f =
包含以下值的 function_handle:
@(a)@(b,c)@(x)x^a+b*c
两重以上的匿名函数的各变量的作⽤域可以参考⼆重匿名函数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。