首页 > 解决方案 > 选择 Eigen 中满足条件的行

问题描述

    one two three four
 [1,]   1   6    11   16
 [2,]   2   7    12   17
 [3,]   3   8    11   18
 [4,]   4   9    11   19
 [5,]   5  10    15   20

我想提取其行的第三列 = 11 的子矩阵。即:

      one two three four
 [1,]   1   6    11   16
 [3,]   3   8    11   18
 [4,]   4   9    11   19

如何在 Eigen 中做到这一点?

标签: c++eigen3

解决方案


Eigen::Array包含有关矩阵的行是否符合标准的信息的​​布尔值可以定义为

enum cols {one, two, three, four};
auto is_selected = (mat.col(three).array() == 11);

数组is_selected,可能在将其转换为整数向量之后,可用于构造一个新矩阵,该矩阵由原始矩阵的选定行组成,如本答案中所述。


推荐阅读