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

标签 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 个元素。它并不总是必须是第二列,有时列索引会发生变化,但这不是现在的问题。

最佳答案

使用ismember函数创建 logical index基于 A 的列 j=2 和向量 b,并使用该索引进入 A 的行:

output = A(ismember(A(:,j), b), :);

关于Matlab - 通过具有特定值来过滤矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44556470/

相关文章:

matlab - 在matlab中根据输入变量名创建唯一的输出变量名

c++ - 多边形面积和多面体体积的精确公式

python - 如何将带有网格网格和数组的 Matlab 代码转换为 Python 代码?

image - 在 MATLAB 中更改线上的像素值

matlab - 如何在octave/matlab中创建垂直 slider

python - 分组和过滤 Pandas 数据框

javascript - 如何用React对同一张表数据进行过滤和排序?

java - 从字符串中过滤单词

git - 这个 git smudge/clean 过滤器有什么问题?

CSS:通过数据过滤器属性选择元素