MATLAB: Use one matrix to change values of another

matrices

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]

Best Answer

  • 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