How can I merge multiple columns between two matrices?

1 visualización (últimos 30 días)
Joseph Gaglione
Joseph Gaglione el 3 de Sept. de 2020
Editada: Bruno Luong el 3 de Sept. de 2020
I'm looking for a better way to merge two matrices based on a third. To take the first column one matrix and the second, third etc from the second based on custom mapping. For example:
a =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
b =
4 5 6 7
4 5 6 7
4 5 6 7
4 5 6 7
c =
0 1 1 0
Using c to combine a and b I would want to get a final matrix d which looks like:
d =
1 5 6 4
1 5 6 4
1 5 6 4
1 5 6 4
Currently I'm using a loop to select colums one at a time based on the c value, but this can get a little slow for larger matrices. Is there a simpler way to combine two matrices in this way?
Thanks

Respuesta aceptada

madhan ravi
madhan ravi el 3 de Sept. de 2020
In one line:
d = (~c .* a) + (c .* b)

Más respuestas (1)

Bruno Luong
Bruno Luong el 3 de Sept. de 2020
Editada: Bruno Luong el 3 de Sept. de 2020
d = a
d(:,c==1) = b(:,c==1)
  1 comentario
Bruno Luong
Bruno Luong el 3 de Sept. de 2020
Editada: Bruno Luong el 3 de Sept. de 2020
NOTE: This method works even if a or b contains -Inf/+Inf and NaN

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Productos


Versión

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by