MATLAB带“@”的匿名函数表达方式与实例

匿名函数是MATLAB7.0以后引入的新概念,可以用其来替代以往各种的函数,尤其是复杂函数的表达形式。

例如,对于一个复杂函数 y=f(x),倘若f(x)的表达式非常复杂,在后续代码中,调用这个函数的时候,只需要用y(1)即可代替当x=1时的那一串以x为自变量的表达式。而且,这还为用隐函数来进行非线性拟合、提高隐函数或复杂函数求解效率,以及进行多重函数定义等提供了解决方案。

匿名函数的格式

函数=@(指定的自变量) 函数表达式

下面来看实例

公式1 >>单一变量显函数,y=f(x)形式

fig1

-------MATLAB代码-----------

>> f=@(x) 3*x^2

f =

    @(x)3*x^2

>> fx=f(6)

fx =

   108

-------MATLAB代码-----------

公式2>>多变量显函数,g=f(x,y)形式

fig2

-------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>>多层嵌套匿名函数

fig3

在这个问题在中,当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是两个自变量。即每个“@”只对其右边的表达式负责。而当调用函数的时候,则是从左向右依次调用的。

长河

在曾经的博客时代,是“首个桥隧工程领域独立博主”,目前是一名默默耕耘的普通高校教师。一家之言,仅供参考,未必成熟、绝不权威。

相关推荐

暂无评论

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。