我正在寻找一个功能i Matlab
到子集和数组,如SQL中的IN
函数或R. {I}中的%in%
。我有以下数据:
a = 1:3;
b = 2:4;
然后我想写一些类似的东西:
(a %in% b)
它应该产生:
ans =
0 1 1
然而,使用%in%显然不起作用。
答案 0 :(得分:3)
您可能正在寻找函数ismember
,它检查一个矩阵的哪些成员也是第二个矩阵的成员。如果可以/无法在矩阵a
中找到它,则会为矩阵b
中的每个条目返回true / false。
ismember(a, b)
ans =
0 1 1
作为旁注:%
是开始评论的角色。
答案 1 :(得分:1)
您也可以使用bsxfun
:
result = sum(bsxfun(@eq, a(:).', b(:)), 1);
这样做的好处是它可以告诉你 b
的多少元素等于a
的每个元素。例如,
>> a = [1 2 3];
>> b = [2 3 4 2];
>> result = sum(bsxfun(@eq, a(:).', b(:)),1)
result =
0 2 1