многошаговые анонимные функции - PullRequest
2 голосов
/ 09 сентября 2010

У меня довольно сложная функция, которую я хотел бы написать как анонимную функцию.

Это выглядит примерно так:

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

Однако я не знаю, как поместить это в анонимную функцию. Есть ли способ сделать это, не записав его в виде нескольких каскадных функций?

Ответы [ 2 ]

3 голосов
/ 09 сентября 2010

Существует два способа:

Либо вы сохраняете свою функцию MatlabFunction на пути Matlab, и определяете свою анонимную функцию как

myFun = @MatlabFunction;

Или вы определяете функцию напрямуюкак

myFun = @(x)cos(sin(4*x));
0 голосов
/ 20 мая 2014

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) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...