how to efficiently encode two values as a unique entitiy
Afficher commentaires plus anciens
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 commentaire
Star Strider
le 23 Nov 2018
Réponse acceptée
Plus de réponses (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.
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!