switch statement to select a function

4 ビュー (過去 30 日間)
xplore29
xplore29 2013 年 3 月 29 日
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

採用された回答

Walter Roberson
Walter Roberson 2013 年 3 月 29 日
funs = {@(Y) Y, @(Y) flipud(Y)', @(Y) flipud(fliplr(Y)), @(Y) rot90(Y,1)}
ReceivedY = funs{indicator}(Y);
  2 件のコメント
xplore29
xplore29 2013 年 3 月 29 日
thanks a lot.....it works like magic. I had never heard of any such thing before.
Walter Roberson
Walter Roberson 2013 年 3 月 29 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeEncryption / Cryptography についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by