匿名函数
匿名函数
- f=@(arglist)anonymous_function, 如:f=@(x,y)x+y, 则 f(1,2)=3。注意匿名函数后面的函数表达式不需要引号。
- 对于数组,注意匿名函数中(.)运算符的应用, 如: f=@(x,y) x.^2+y.^2
- 匿名函数可以使用前面定义过的变量
c=1; f=@(x,y)x.^2+y.^2+c; f([1 2],[3 4]) ans= 11 21
但是需要注意的是,定义过的变量如果发生变化,匿名函数是不会改变所使用的变量的,例如上面例子中如果改变c,c=3。此时再执行匿名函数f([1 2],[3 4]),结果不会改变,仍然是 11 21
- 使用匿名函数给符号表达式赋值
>> syms x z >> syms x y z >> z=x^2+y^2 z = x^2 + y^2 >> f=eval(['@(x,y)',vectorize(z)]) f = 包含以下值的 function_handle: @(x,y)x.^2+y.^2 >> f(1,3) ans = 10
- 匿名函数可以灵活构造矩阵并进行运算,例如
>> f=@(x,y)[x,x;y,y]*[1,2;3,4]; f(1,2) ans = 4 6 8 12