MATLAB Answers


switch statement to select a function

Asked by xplore29
on 29 Mar 2013

I have select one out of four functions, decided by the value of variable named "Indicator", which can be applied to a matrix Y as follows

ReceivedY = isequal(Indicator,1).*Y
ReceivedY = isequal(Indicator,2).*flipud(Y)'
ReceivedY = isequal(Indicator,3).*flipud(fliplr(Y))
ReceivedY = isequal(Indicator,4).*rot90(Y,1)

I want to write a function which takes in Indicator and gives me back newY depending upon the value of Indicator

NewY = somefunction(Y,Indicator)

I option is to use switch statements...but I have to repeat this thing many times so I am reluctant to use this option. What else can I do



No products are associated with this question.

1 Answer

Answer by Walter Roberson
on 29 Mar 2013
 Accepted answer

funs = {@(Y) Y, @(Y) flipud(Y)', @(Y) flipud(fliplr(Y)), @(Y) rot90(Y,1)}
ReceivedY = funs{indicator}(Y);


thanks a works like magic. I had never heard of any such thing before.

You can improve performance as follows:

persistent funs
if isempty(funs)
  funs = {@(Y) Y, @(Y) flipud(Y)', @(Y) flipud(fliplr(Y)), @(Y) rot90(Y,1)}
ReceivedY = funs{indicator}(Y);

This will prevent the code from having to recreate the anonymous functions each time.

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!