如何在Eigen中执行索引操作?

时间:2014-07-23 00:00:18

标签: c++ indexing eigen

我需要为我的代码的一部分提供一个对象的索引,该对象存储为Eigen::Array类型。我没有将Eigen的功能扩展到该部分代码的奢侈,也不能将它传递给指针。我需要一个索引来表示数组中匹配值的位置。

假设我有一个Eigen::Array这样的对象:

Eigen::Array<int,5,1> mat;
mat << 0, 0, 1, 0, 1;

现在我想在上面的矩阵中找到一个元素的第一个索引,它比较一些条件(比如,它们等于 true )。

因此,对于上述输入,我希望输出2。我也接受4的输出,因为我并不特别关注订单(如果存在指定搜索方向的选项,那将是好的,但不是必需的。)

std::size_t const index = FindIndex(mat);
assert(index == 2 || index == 5); // please don't fail!

我知道我可以循环遍历数组并通过计数器手动实现,但这有点忽略了Eigen的要点。有没有办法使用Eigen的内置功能实现这一点(其他而不是unaryExpr

1 个答案:

答案 0 :(得分:0)

没有。我无法看到你可以使用的任何东西。

您可以找出有多少非零值:

std::size_t const numNonZero = (mat != 0).count();
assert(numNonZero == 2);