Use one matrix to change values of another

조회 수: 1 (최근 30일)
Michael King
Michael King 2019년 7월 4일
댓글: Michael King 2019년 7월 4일
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]

채택된 답변

Stephen23
Stephen23 2019년 7월 4일
편집: Stephen23 2019년 7월 4일
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

추가 답변 (1개)

Guillaume
Guillaume 2019년 7월 4일
편집: Guillaume 2019년 7월 4일
Simply:
B(~ismember(B, A)) == 0

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by