本征为零,但在每个矩阵元素上

问题描述 投票:0回答:1

[Eigen中有一个非常有用的函数,称为isFinite,它在矩阵上进行迭代,检查NAN和INF的适当值,并以此方式使用:

#include <iostream>
#include <Eigen/Dense>
#include <vector>
#include <numeric>

namespace eig = Eigen;

int main() {

    eig::MatrixXd e(2, 2);

    e << 8.0, std::nan("1"), std::numeric_limits <double> ::infinity(), 4.0;

    std::cout << e << std::endl;

    e = (e.array().isFinite()).select(e, 0.0);

    std::cout << e << std::endl;

    return 0;
}

// Output:
//
//   8 nan
// inf   4
// 8 0
// 0 4

还有一个名为isZero的函数,但是应用于矩阵时,它仅返回布尔值。我的问题是,是否有一个函数与isFinite一样,但是会检查值,例如零?

c++ eigen
1个回答
0
投票

如果您想逐个元素地检查零,则可以简单地编写

(e.array()==0)

检查浮点值是否相等时要注意通常的注意事项。

要检查较小的数字,您可以写类似的东西

(e.array().abs() < 1e-10)
© www.soinside.com 2019 - 2024. All rights reserved.