switch statement to select a function
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2013-3-29
funs = {@(Y) Y, @(Y) flipud(Y)', @(Y) flipud(fliplr(Y)), @(Y) rot90(Y,1)}
ReceivedY = funs{indicator}(Y);
2 个评论
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 Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!