How to efficiently encode two values as a unique entitiy

1 vue (au cours des 30 derniers jours)
balandong
balandong le 23 Nov 2018
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==1
C=4;
elseif A==2 && B==2
C=5;
elseif A==2 && B==3
C=6;
elseif A==3 && B==1
C=7;
elseif A==3 && B==2
C=8;
elseif A==3 && B==3
C=9;
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

Réponse acceptée

Stephen23
Stephen23 le 23 Nov 2018
Modifié(e) : Stephen23 le 23 Nov 2018
M = [1,2,3;NaN,4,5;6,7,8];
C = M(A,B)
"In addition, I also wonder if we can scale it up for A=[2;2;3;1] and B= [1;1;3;1]"
arrayfun(@(a,b)M(a,b),A,B)
  1 commentaire
balandong
balandong le 23 Nov 2018
Dear Stephen,
Thanks for the quick reply, your solution work like a charm

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 23 Nov 2018
in your case:
>> A=[3;3;3;1]; B= [1;1;3;1];
f = @(A,B) 3*(A(:) - 1) + B(:);
C = f(A,B)
C =
7
7
9
1
>>

Produits


Version

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by