indexing multiple values in two arrays with different size
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Pietro
am 13 Feb. 2019
Kommentiert: madhan ravi
am 15 Feb. 2019
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 Kommentare
Akzeptierte Antwort
madhan ravi
am 13 Feb. 2019
A=sum(a(:,1)==b(:,1).');
a(:,2)=repelem(b(:,2),A).'
1 Kommentar
madhan ravi
am 13 Feb. 2019
For version prior to 2016b:
A=sum(bsxfun(@eq,a(:,1),b(:,1).'));
a(:,2)=repelem(b(:,2),A).'
Weitere Antworten (1)
Pietro
am 14 Feb. 2019
4 Kommentare
madhan ravi
am 15 Feb. 2019
So instead of creating variable A in workspace why not directly implement it ?
a(:,2)=repelem(b(:,2),sum(a(:,1)==b(:,1).')).';
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!