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