MATLAB匿名函数

来源:互联网 发布:飞鹰网络电视直播软件 编辑:程序博客网 时间:2024/05/20 15:42

匿名函数的基本定义

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    30

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+bf =  包含以下值的 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*cf =  包含以下值的 function_handle:    @(a)@(b,c)@(x)x^a+b*c

两重以上的匿名函数的各变量的作用域可以参考二重匿名函数。

原创粉丝点击