Borrar filtros
Borrar filtros

switch statement to select a function

3 visualizaciones (últimos 30 días)
xplore29
xplore29 el 29 de Mzo. de 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

Respuesta aceptada

Walter Roberson
Walter Roberson el 29 de Mzo. de 2013
funs = {@(Y) Y, @(Y) flipud(Y)', @(Y) flipud(fliplr(Y)), @(Y) rot90(Y,1)}
ReceivedY = funs{indicator}(Y);
  2 comentarios
xplore29
xplore29 el 29 de Mzo. de 2013
thanks a lot.....it works like magic. I had never heard of any such thing before.
Walter Roberson
Walter Roberson el 29 de Mzo. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by