子集数组到Matlab中另一个数组的成员

时间:2014-12-15 08:10:40

标签: matlab

我正在寻找一个功能i Matlab到子集和数组,如SQL中的IN函数或R. {I}中的%in%。我有以下数据:

a = 1:3;
b = 2:4;

然后我想写一些类似的东西:

(a %in% b)

它应该产生:

ans =

     0     1     1

然而,使用%in%显然不起作用。

2 个答案:

答案 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