如何从向量中记录的矩阵中提取值?

时间:2016-06-08 09:42:59

标签: matlab matrix vector

刚刚遇到这个问题可能在许多应用程序中都很有趣,例如,

我有一个向量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循环中完成的,但对于大型3D矩阵,完成循环需要很长时间。

只是想知道是否有一种更聪明的方法可以在没有'的情况下执行此操作。循环。

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

1 个答案:

答案 0 :(得分: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(true)的数组,其中A中的数据   在B. Elsewhere中找到,它返回0(假)。