how to efficiently encode two values as a unique entitiy
Show older comments
Dear all,
With respect to the above subject, I wonder if we can make the following code more efficient and compact (reduce the ifelse)..
A=3;
B=3;
C=[];
if A==1 && B==1
C=1;
elseif A==1 && B==2
C=2;
elseif A==1 && B==3
C=3;
elseif A==2 && B==2
C=4;
elseif A==2 && B==3
C=5;
elseif A==3 && B==1
C=6;
elseif A==3 && B==2
C=7;
elseif A==3 && B==3
C=8;
end
In addition, I also wonder if we can scale it up for A=[2;2;3;1] and B= [1;1;3;1]
Thanks in advance
1 Comment
Star Strider
on 23 Nov 2018
Accepted Answer
More Answers (1)
Start with a simplification by omitting repeated comparisons:
A = 3;
B = 3;
C = [];
if A == 1
if B == 1
C = 1;
elseif B == 2
C = 2;
elseif B == 3
C = 3;
end
elseif A == 2
if B == 2
C = 4;
elseif B == 3
C = 5;
end
elseif A == 3
if B == 1
C = 6;
elseif B == 2
C = 7;
elseif B == 3
C = 8;
end
end
This should run faster, but is not much nicer. What about switch ?
A = 3;
B = 3;
C = [];
switch A
case 1
switch B
case 1
C = 1;
case 2
C = 2;
case 3
C = 3;
end
case 2
switch B
case 2
C = 4;
case 3
C = 5;
end
case 3
switch B
case 1
C = 6;
case 2
C = 7;
case 3
C = 8;
end
end
end
Nope, not nicer also.
Categories
Find more on MATLAB in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!