2016-06-08 48 views
0

過這個問題剛剛來到可能在許多應用中很有趣,例如,如何從矩陣中提取記錄在矢量中的值?

我有一個載體A = [2; 5; 10],在向量A的值進行排序和獨特的。

我有一個矩陣(2D或3D),例如,B = [2, 8, 10; 2, 5, 5; 9, 1, 10];

想要得到一個矩陣C = [1, 0, 1; 1, 1, 1; 0, 0, 1]

這意味着如果B中的元素也是A的元素,我們將其設置爲1;否則,將該值設置爲零。

我在for-loop中做了這個,但是對於一個大的3D矩陣來說,完成循環需要很長時間。

只是想知道是否有一個更聰明的方法來做到這一點,沒有'for'循環。

C = zeros(size(B)); 
for i = 1:size(A,1) 
    a = A(i); 
    C(B==a) = 1; 
end 

回答

4

這正是ismember作用:

A = [2; 5; 10]; 
B = [2, 8, 10; 2, 5, 5; 9, 1, 10]; 
C = ismember(B,A) 

C = 

    1  0  1 
    1  1  1 
    0  0  1 

從文檔:

ismember(A,B)返回包含1(真),其中所述的 數據是以乙發現的陣列在其他地方,它返回0(假)。