Use one matrix to change values of another

2 visualizaciones (últimos 30 días)
Michael King
Michael King el 4 de Jul. de 2019
Comentada: Michael King el 4 de Jul. de 2019
I have two matrices, A and B which are something like:
A = [1; 2; 3; 4; 16; 17; 18; 19 ....] (not a repeating formula just numbers from 1 to 8976 with a lot missing in between)
B = [1 2 3 4 8 9 10 11; 1 2 5 6 7 8 16 17; 3 4 5 6 18 19 20 21]
I want to make it so that the numbers in B that are not in A are change to 0, so that B would look like
[1 2 3 4 0 0 0 0; 1 2 0 0 0 0 16 17; 3 4 0 0 18 19 0 0]

Respuesta aceptada

Stephen23
Stephen23 el 4 de Jul. de 2019
Editada: Stephen23 el 4 de Jul. de 2019
Method one: indexing:
>> X = ismember(B,A)
>> B(~X) = 0
B =
1 2 3 4 0 0 0 0
1 2 0 0 0 0 16 17
3 4 0 0 18 19 0 0
Method two: multiplication:
>> X = ismember(B,A)
>> B = B.*X
B =
1 2 3 4 0 0 0 0
1 2 0 0 0 0 16 17
3 4 0 0 18 19 0 0

Más respuestas (1)

Guillaume
Guillaume el 4 de Jul. de 2019
Editada: Guillaume el 4 de Jul. de 2019
Simply:
B(~ismember(B, A)) == 0

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by