刚刚遇到这个问题可能在许多应用程序中都很有趣,例如,
我有一个向量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
答案 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(假)。