匿名函数是MATLAB7.0以后引入的新概念,可以用其来替代以往各种的函数,尤其是复杂函数的表达形式。
例如,对于一个复杂函数 y=f(x),倘若f(x)的表达式非常复杂,在后续代码中,调用这个函数的时候,只需要用y(1)即可代替当x=1时的那一串以x为自变量的表达式。而且,这还为用隐函数来进行非线性拟合、提高隐函数或复杂函数求解效率,以及进行多重函数定义等提供了解决方案。
匿名函数的格式
函数=@(指定的自变量) 函数表达式
下面来看实例
公式1 >>单一变量显函数,y=f(x)形式
-------MATLAB代码-----------
>> f=@(x) 3*x^2
f =
@(x)3*x^2
>> fx=f(6)
fx =
108
-------MATLAB代码-----------
公式2>>多变量显函数,g=f(x,y)形式
-------MATLAB代码-----------
>> g=@(x,y)3*x^4+5*y^3
g =
@(x,y)3*x^4+5*y^3
>> gxy=g(3,2)
gxy =
283
-------MATLAB代码-----------
另外,如果对于批量赋值,即将上面两个例子中的x理解成为矩阵x,则因为矩阵之间的乘除法需要加一个点,变为点乘、点除,则公式1可以修改为:
-------MATLAB代码-----------
>> f=@(x) 3*x.^2
f =
@(x)3*x.^2
>> fx=f(1:10)
fx =
3 12 27 48 75 108 147 192 243 300
-------MATLAB代码-----------
公式3>>多层嵌套匿名函数
在这个问题在中,当a,b为已知参数时,则转化成为前面的两种情况,而当参数a,b为未知数时,则需要用多层嵌套的匿名函数来表示。
下面先来举一个例子
-------MATLAB代码-----------
>> f=@(a,b) @(x) a*x^2+b*x+1
f =
@(a,b)@(x)a*x^2+b*x+1
>> g=f(2,3)
g =
@(x)a*x^2+b*x+1
>> gx=g(4)
gx =
45
-------MATLAB代码-----------
上例中,里面的@(x)指的是在表达式a*x^2+b*x+1中,只有x为自变量;向外一层的@(a,b)则指的是在@(x) a*x^2+b*x+1中,a和b是两个自变量。即每个“@”只对其右边的表达式负责。而当调用函数的时候,则是从左向右依次调用的。
暂无评论