matlab - 根据 Matlab 中函数的值过滤矩阵行

标签 matlab matrix filter row

这似乎是一个简单的问题,但我一直无法在任何地方找到答案。如果我有一个由任意数量的行组成的 Matlab 矩阵 A,我将如何根据某个函数 f 的值过滤这些行(其参数是行向量)?换句话说,我如何只保留矩阵 Aftrue 的行?我试过了

A(f(A(:)), :)

但没有成功。任何帮助将不胜感激。

最佳答案

Dan答案是,您可以根据逻辑向量过滤矩阵的行。令 selectRows 为逻辑向量,其中 numel(selectRows) == size(A,1) ,其中 true 表示要保留的行,并且 false 表示要丢弃的行。然后:

A( ~selectRows, : ) = [];

将删除 selectRows == false 的所有行。

现在的问题是如何使用函数f生成逻辑向量selectRows

如果f知道如何处理多行,并相应地返回多个true/false值,则

selectRows = f(A);

应该可以解决问题。

但是,如果 f 只知道如何一次处理一行,则您将需要循环遍历这些行。这样做的一种方法是

selectRows = cellfun( @f, mat2cell( A, ones(size(A,1)), size(A,2) ) );

关于matlab - 根据 Matlab 中函数的值过滤矩阵行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14944010/

相关文章:

java - 过滤两次 Lambda Java

algorithm - 在 MATLAB 中快速查找互补向量的方法

arrays - 在matlab中对结构体中的数据进行向量化

python - 用转置版本填充矩阵

algorithm - 矩阵中最短距离中的最大值

javascript - 如何使用 HTML 按钮实现简单的递归过滤器

Python pandas 通过对现有列进行分组来创建额外的数据框列

matlab - 使用倍频程/matlab 代码随时间递增/逐渐改变信号的音高

image-processing - 如何处理图像中的浮点坐标值

检查矩阵的行是否在 O(1) 时间内充满 1