Matlab - 通过具有特定值来过滤矩阵

时间:2017-06-14 23:58:38

标签: matlab filter

我有一个矩阵A和一个向量b。我不知道它们的大小,大小不一,因为它是另一个功能的输出。我想要做的是按列{(例如 j 列)过滤A,其中至少有一个值在b中。

如何在不测量b的大小和连接每个过滤结果的情况下执行此操作。现在,代码是这样的(假设 j 是给定值)

bsize=size(b,1);
for i=1:bsize
    if i==1
        a=A(A(:,j)==b(i),:);
    else
        a=[a; A(A(:,j)==b(i),:)];
    end
end

我想编写更快的解决方案。

我正在添加一个数字示例,只是为了说清楚。我们说

A=[2  4
   7 14
  11 13
  15 14]

b=[4 14]

我要做的是过滤以获取第二列中值为4和14的A矩阵,b的元素以获得以下输出。

A=[2  4
   7 14
  15 14]

在我的数据A中有超过12000行,而b有超过100个元素。它并不总是必须是第二列,有时列索引会发生变化,但现在不是问题。

1 个答案:

答案 0 :(得分:2)

使用ismember功能基于j=2A的{​​{1}}列创建logical index,并将该索引用于{的行{1}}:

b