2016-06-08 47 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(假)。