indexing multiple values in two arrays with different size
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a simple problem that unfortunately I am failiing so solve (and to find solutions in internet).
Assuming I have 2 matrixes
a = [1 1 1 1 2 2 2 2 2 5 5 5; 0 0 0 0 0 0 0 0 0 0 0 0]';
b = [1 2 5; 11 12 15]';
I would like (without a for loop, that is my current, very slow implementation) to assign in a the corresponding values in the second column of b, when a(x, 1) == b(x,1). Basically the final result should be
a = [1 1 1 1 2 2 2 2 2 5 5 5; 11 11 11 11 12 12 12 12 12 15 15 15]
Thanks a lot for any help
0 commentaires
Réponse acceptée
madhan ravi
le 13 Fév 2019
A=sum(a(:,1)==b(:,1).');
a(:,2)=repelem(b(:,2),A).'
1 commentaire
madhan ravi
le 13 Fév 2019
For version prior to 2016b:
A=sum(bsxfun(@eq,a(:,1),b(:,1).'));
a(:,2)=repelem(b(:,2),A).'
Plus de réponses (1)
Pietro
le 14 Fév 2019
4 commentaires
madhan ravi
le 15 Fév 2019
So instead of creating variable A in workspace why not directly implement it ?
a(:,2)=repelem(b(:,2),sum(a(:,1)==b(:,1).')).';
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!