【发布时间】:2023-03-05 00:12:02
【问题描述】:
我有一个相当复杂的函数,我想写一个匿名函数。
看起来像这样:
function Answer = MatlabFunction(x)
a=4*x;
b=sin(a);
c=cos(b);
Answer = c;
但是,我不知道如何将其放入匿名函数中。有没有办法在不将其编写为多个级联函数的情况下做到这一点?
【问题讨论】:
标签: matlab
我有一个相当复杂的函数,我想写一个匿名函数。
看起来像这样:
function Answer = MatlabFunction(x)
a=4*x;
b=sin(a);
c=cos(b);
Answer = c;
但是,我不知道如何将其放入匿名函数中。有没有办法在不将其编写为多个级联函数的情况下做到这一点?
【问题讨论】:
标签: matlab
有两种方式:
或者,您将函数MatlabFunction 保存在 Matlab 路径中,并将您的匿名函数定义为
myFun = @MatlabFunction;
或者,你直接定义函数为
myFun = @(x)cos(sin(4*x));
【讨论】:
Matlab 因不支持多步匿名函数而臭名昭著。然而,存在一些丑陋的技巧来规避这个限制。 http://www.mathworks.com/matlabcentral/answers/50195-is-it-possible-to-write-several-statements-into-an-anonymous-function 介绍了一些,例如:
if/else 可以通过以下方式以函数形式编码:
FHEXEC = @(FH) FH(); FHSELECT = @(TF,CONDITION) TF(CONDITION==[true,false]); IF = @(CONDITION,TRUEFUNC,FALSEFUNC) FHEXEC( FHSELECT([TRUEFUNC,FALSEFUNC],CONDITION) )
【讨论】: