例
匿名函数是MATLAB7.0以后引⼊的新概念,可以⽤其来替代以往各种的函数,尤其是复杂函数的表达形式。
例如,对于⼀个复杂函数 y=f(x),倘若f(x)的表达式⾮常复杂,在后续代码中,调⽤这个函数的时候,只需要⽤y(1)即可代替当x=1时的那⼀串以x为⾃变量的表达式。⽽且,这还为⽤隐函数来进⾏⾮线性拟合、提⾼隐函数或复杂函数求解效率,以及进⾏多重函数定义等提供了解决⽅案。
匿名函数的格式
函数=@(指定的⾃变量) 函数表达式
下⾯来看实例
公式1 >>单⼀变量显函数,y=f(x)形式
-
------MATLAB代码-----------
>> f=@(x) 3*x^2
matlab求导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是两个⾃变量。即每个“@”只对其右边的表达式负责。⽽当调⽤函数的时候,则是从左向右依次调⽤的。
发布评论