indexing multiple values in two arrays with different size
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Pietro
el 13 de Feb. de 2019
Comentada: madhan ravi
el 15 de Feb. de 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 comentarios
Respuesta aceptada
madhan ravi
el 13 de Feb. de 2019
A=sum(a(:,1)==b(:,1).');
a(:,2)=repelem(b(:,2),A).'
1 comentario
madhan ravi
el 13 de Feb. de 2019
For version prior to 2016b:
A=sum(bsxfun(@eq,a(:,1),b(:,1).'));
a(:,2)=repelem(b(:,2),A).'
Más respuestas (1)
Pietro
el 14 de Feb. de 2019
4 comentarios
madhan ravi
el 15 de Feb. de 2019
So instead of creating variable A in workspace why not directly implement it ?
a(:,2)=repelem(b(:,2),sum(a(:,1)==b(:,1).')).';
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!