switch case efficiency question
7 次查看(过去 30 天)
显示 更早的评论
I have a question about switch/case structure.
if true
switch input[a,b]
case [1,1]
do something 1
case [1,2]
do something 2
case ...
... etc.
end
since a =1 to 40 and b = 1 to 11. So i will end up with a few hundred cases. How to make the code doing the selection more efficient? Thanks, Chong
0 个评论
采纳的回答
Image Analyst
2013-9-14
First of all, a few hundred tests is nothing - it will take just a very small fraction of a second to test 440 cases. Now if you had millions of tests, that might take some time. However looking at a switch statement that spans several thousand lines is difficult. So how you can compact that depends on what "something" is. If it's something that depends on a and b then you could just make the whole thing a single function. But if it really does unique operations in each case block, then you may be stuck. Is there anyway the "somethings" could be made into a single function taking a and b as an input? And I don't mean just transferring 440 tests inside the function. I mean like the something can be parameterized, like out=10*a+42*b or something like that.
1 个评论
Image Analyst
2013-9-14
Responding to Chong's "Answer"... No, adding a break won't make it faster since it automatically breaks anyway once it does the case block.
更多回答(2 个)
Jan
2013-9-15
Please post the problem in valid Matlab syntax. "switch input[a,b]" could mean a variety of different things.
Your code example seems to be a look-up-table. Then this would be more efficient:
a = 1;
b = 2;
lut = [18, 20, 23; 19, 26, 65];
M = lut(a, b);
2 个评论
Image Analyst
2013-9-15
I thought "Do something" meant executing a bunch of code that was all unique, not just assigning a single variable like M. If it's really as simple as assigning some variable, then a look up table would work. If they're integers you can use intlut() in the Image Processing Toolbox.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!