matlab怎么给函数⾃变量赋值_matlab函数赋值如何实现?匿名⽤户
1级
2012-04-28 回答
在Matlab7.0以后的版本中,出现了⼀种新的函数类型–匿名函数,不但能够完成原来版本中内联函数(inline)的功能,还提供了其他更⽅便的功能。Matlab⾸席科学家Moler教授都推荐⽤匿名函数替代原来的内联函数。我最近学习了⼀些有关匿名函数的内容,现在总结⼀下:
1,匿名函数的基本⽤法。
handle = @(arglist)anonymous_function
怎么给数组赋值其中handle为调⽤匿名函数时使⽤的名字。arglist为匿名函数的输⼊参数,可以是⼀个,也可以是多个,⽤逗号分隔。
anonymous_function为匿名函数的表达式。举个例⼦如下:
>> f=@(x,y)x^2+y^2; >> f(1,2) ans = 5
当然输⼊的是数组也是可以的:
>> f=@(x,y)x.^2+y.^2; %注意需要点(.)运算 >> a=1:1:10; >> b=10:-1:1; >> f(a,b) ans = 101 85 73 65 61 61 65 73 85 101
匿名函数的表达式中也可以有参数的传递,⽐如:
>> a=1:5; >> b=5:-1:1; >> c=0.1:0.1:0.5; >> f=@(x,y)x.^2+y.^2+c; >> f(a,b) ans = 26.1000 20.2000 18.3000 20.4000
26.5000
c作为表达式中的参数,进⾏了数据传递。上⾯都是单重匿名函数,也可以构造多重匿名函数,如:
>> f=@(x,y)@(a) x^2+y^+a; >> f1=f(2,3) f1 = @(a)x^2+y^+a >> f2=f1(4) f2 = 85
每个@后的参数从它后⾯开始起作⽤,⼀直到表达式的最后。
2.使⽤匿名函数实现符号函数的赋值运算
在⽼版本的Matlab中,这个功能是由inline函数完成的,现在⽤匿名函数完成此功能。⽐如:知道z=2x^
3+4x+5,求z在x=3处的2阶导数值。可以先⽤符号函数算出z的2阶导数的表达式,然后通过匿名函数,把x赋予3的值,得到最后结果:
>> syms x; %定义符号变量 >> z=2*x^3+4*x+5; %定义表达式 >> z1=diff(z,2) %求z的2阶导数的表达式 z1 = 12*x >>
z2=eval_r(['@(x)' vectorize(z1)]); %vectorize函数的功能是使内联函 %数适合数组运算的法则 >> z2(3) ans = 36
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论