2016-10-23 165 views
1

替換值I矩陣與Matlab的從零矩陣

A = [123 123 123 99 99 99 32 32 32 40 
     40 40 22 22 34 34 34 152 152 152 
     92 92 92 91 91 91 146 146 146 119 
     3  3 96 96 96 136 136 136 68 68 
    ] 
B = [40 68 119] 

如何與零值代替從A具有與B值相同要求的結果:

C = [123 123 123 99 99 99 32 32 32  0 
     0  0 22 22 34 34 34 152 152 152 
     92 92 92 91 91 91 146 146 146  0 
     3  3 96 96 96 136 136 136  0  0 
    ] 

謝謝...

回答

2

使用ismember可獲得B中的值爲A的邏輯掩碼,然後將其用作邏輯索引以使這些條目爲零:

C = A; % define C equal to A 
C(ismember(A,B)) = 0; % make elements from B equal to 0 

或者,在一個單行:通過在B的元素等於1B0的元素口罩乘A

C = A.*~ismember(A,B); % multiply A by a mask to make elements from B equal to 0 
+1

非常感謝你@Luis Mendo – 8727

1

我開始沿着這條道路:

C = A; 
for i = 1:numel(B) 
    C(C == B(i)) = 0; 
end 

第三行使用邏輯索引 - C == 20是一個邏輯矩陣,tr ue元素爲20,否則爲false,C(C == 20) = 0將真實元素設置爲0

+0

非常感謝你@丹 – 8727