MATLAB Answers

xplore29
0

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

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

thanks a lot.....it 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)}
end
ReceivedY = funs{indicator}(Y);

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


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!