假设我有一个充满双打的数组:
Eigen::Array<double,m,n> myarray;
Run Code Online (Sandbox Code Playgroud)
现在我想替换任何myarray不符合数字的元素0.0我该怎么做?
我想把它乘以一个带有零的值数组,在那里我找到无穷大,像这样:
myarray *= myarray.cwiseEqual(std::numeric_limits<double>::infinity()) == 0.0;
Run Code Online (Sandbox Code Playgroud)
并为每个无效类型执行此操作.但这真的很混乱.有没有更好的办法?
这是一个简单的方法:
myarray = myarray.unaryExpr([](double v) { return std::isfinite(v)? v : 0.0; });
Run Code Online (Sandbox Code Playgroud)
资料来源:[ http://eigen.tuxfamily.org/dox/classEigen_1_1ArrayBase.html#a23fc4bf97168dee2516f85edcfd4cfe7]