Use one matrix to change values of another

2 Ansichten (letzte 30 Tage)
Michael King
Michael King am 4 Jul. 2019
Kommentiert: Michael King am 4 Jul. 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]

Akzeptierte Antwort

Stephen23
Stephen23 am 4 Jul. 2019
Bearbeitet: Stephen23 am 4 Jul. 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

Weitere Antworten (1)

Guillaume
Guillaume am 4 Jul. 2019
Bearbeitet: Guillaume am 4 Jul. 2019
Simply:
B(~ismember(B, A)) == 0

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by