多步匿名函数

时间:2010-09-09 00:52:53

标签: matlab

我有一个相当复杂的功能,我想写一个匿名函数。

它看起来像这样:

function Answer = MatlabFunction(x)
a=4*x;
b=sin(a);
c=cos(b);
Answer = c;

我不知道如何将它放入匿名函数中。有没有办法在不将其作为多个级联函数编写的情况下执行此操作?

2 个答案:

答案 0 :(得分:3)

有两种方法:

要么将函数MatlabFunction保存在Matlab路径上,要将匿名函数定义为

myFun = @MatlabFunction;

或者,您将函数直接定义为

myFun = @(x)cos(sin(4*x));

答案 1 :(得分:0)

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) )