文章目录
- -------MATLAB代码----------- >> f=@(x) 3*x^2 f = @(x)3*x^2 >> fx=f(6) fx = 108 -------MATLAB代码-----------
- -------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代码-----------
- 在这个问题在中,当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是两个自变量。即每个“@”只对其右边的表达式负责。而当调用函数的时候,则是从左向右依次调用的。
匿名函数是MATLAB7.0以后引入的新概念,可以用其来替代以往各种的函数,尤其是复杂函数的表达形式。
例如,对于一个复杂函数 y=f(x),倘若f(x)的表达式非常复杂,在后续代码中,调用这个函数的时候,只需要用y(1)即可代替当x=1时的那一串以x为自变量的表达式。而且,这还为用隐函数来进行非线性拟合、提高隐函数或复杂函数求解效率,以及进行多重函数定义等提供了解决方案。
匿名函数的格式
函数=@(指定的自变量) 函数表达式
下面来看实例
-------MATLAB代码-----------
>> f=@(x) 3*x^2
f =
@(x)3*x^2
>> fx=f(6)
fx =
108
-------MATLAB代码-----------
-------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代码-----------
在这个问题在中,当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是两个自变量。即每个“@”只对其右边的表达式负责。而当调用函数的时候,则是从左向右依次调用的。







暂无评论