Using a binary matrix as an index to select values from another matrix

10 visualizaciones (últimos 30 días)
Hi all,
I think this is a really beginner question, but I can't seem to find the relevant answers online.
If I have the following matrix:
% 3x2
index_matrix = [0,0;1,0;1,1;]
% 3x2
p = [13,12;11,19;22,23;]
I wish to select the corresponding value in p if the value at the same position in index_matrix = 1.
If the value in index_matrix is 0, then the corresponding value should be set to 0.
That is, I wish to have the following:
result = [0,0;11,0;22,23;]
Thank you in advance!

Respuesta aceptada

Kai Franke
Kai Franke el 14 de Jun. de 2019
result = p.*index_matrix
matrix multiplication is the keyword hehe
Best regards.
  3 comentarios
Shuyi Jia
Shuyi Jia el 14 de Jun. de 2019
Editada: Shuyi Jia el 14 de Jun. de 2019
Thanks! That works!
Just a follow-up question, what if my index_matrix is like this:
index_matrix = [1,0;3.5,1;0,6;]
p = [13,12;11,19;22,23;]
And I still wish to obtain the corresponding values in p, only if the values at the same positions in index_matrix == 1 (not 3.5 or 6; 0 for all other values)?
That is:
result = [13,0;0,19;0,0;]
Kai Franke
Kai Franke el 14 de Jun. de 2019
@Stephen Cobeldick
oh yeah you are absolutely right! Element-wise multiplication. My answer was very sloppy, my bad. Thanks for the correction!

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 14 de Jun. de 2019
>> X = [1,0;3.5,1;0,6];
>> p = [13,12;11,19;22,23];
>> p.*(X==1)
ans =
13 0
0 19
0 0
  1 comentario
Shuyi Jia
Shuyi Jia el 14 de Jun. de 2019
Editada: Shuyi Jia el 14 de Jun. de 2019
Thank you! I didn't know one can manipulate matrix like this. New to matlab!

Iniciar sesión para comentar.

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!

Translated by