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

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

0 Comments

xplore29

Products

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

2 Comments

xplore29 on 29 Mar 2013

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

Walter Roberson on 29 Mar 2013

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)}
end
ReceivedY = funs{indicator}(Y);

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

Walter Roberson

Contact us