如何查找和替换Eigen :: Array对象中的所有非有限数字?

时间:2014-04-08 04:06:09

标签: c++ eigen

假设我有一个充满双打的数组:

Eigen::Array<double,m,n> myarray;

现在我想要替换myarray的任何元素,这些元素不是数字0.0,我该怎么做?

我想把它乘以一个带有零的值数组,在那里我找到无穷大,就像这样:

myarray *= myarray.cwiseEqual(std::numeric_limits<double>::infinity()) == 0.0;

为每个无效类型执行此操作。但这真的很混乱。还有更好的方法吗?

1 个答案:

答案 0 :(得分:9)

这是一种简单的方法:

myarray = myarray.unaryExpr([](double v) { return std::isfinite(v)? v : 0.0; });

来源: [http://eigen.tuxfamily.org/dox/classEigen_1_1ArrayBase.html#a23fc4bf97168dee2516f85edcfd4cfe7]

相关问题