MATLAB匿名函数
2017-09-19 22:31
225 查看
匿名函数的基本定义
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+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
两重以上的匿名函数的各变量的作用域可以参考二重匿名函数。
相关文章推荐
- MATLAB中匿名函数与符号函数的转换
- matlab 用 matlabFunction 定义含参变量的积分,将符号函数转化为匿名函数
- Matlab中的匿名函数的使用
- MATLAB 函数编写方法, 浅析MATLAB中的内联函数、匿名函数和函数函数
- Matlab中的匿名函数的使用
- Matlab中的匿名函数的使用
- 【转载】MATLAB函数句柄和匿名函数
- MATLAB 内联函数 与匿名函数的基本用法(笔记)
- 浅析MATLAB中的内联函数、匿名函数和函数函数
- MATLAB匿名函数的应用5
- Matlab 函数进阶:使用匿名函数和内嵌函数处理多变量传递问题(Matlab 7.0以上)
- 匿名函数[matlab]
- MATLAB匿名函数的应用6
- [初学笔记] matlab中 函数m文件创立,匿名函数的建立和调用
- matlab 匿名函数
- Matlab函数句柄, 匿名函数 与 inline 函数
- matlab 中的内联函数、匿名函数和函数函数
- Matlab 函数进阶:使用匿名函数和内嵌函数处理多变量传递问题(Matlab 7.0以上)
- 浅析MATLAB中的内联函数、匿名函数和函数函数
- matlab scatter用法