c++ - 如何在 Eigen 中近似比较 vector ?

标签 c++ linear-algebra eigen

Eigen 中是否有一个函数可以使用相对和绝对容差来比较 vector (矩阵)又名 numpy.allclose ?标准isApprox如果其中一个 vector 非常接近于零,则失败。

最佳答案

没有实现 numpy.allclose 的内置函数,但如果确实需要,您可以轻松地自己编写一个。但是,我宁愿建议使用 isMuchSmallerThan具有引用值(value):

(a-b).isMuchSmallerThan(ref)

其中 ref 是您问题的代表性非零值。

编辑:供引用,这里是 allclose 的可能实现:

template<typename DerivedA, typename DerivedB>
bool allclose(const Eigen::DenseBase<DerivedA>& a,
              const Eigen::DenseBase<DerivedB>& b,
              const typename DerivedA::RealScalar& rtol
                  = Eigen::NumTraits<typename DerivedA::RealScalar>::dummy_precision(),
              const typename DerivedA::RealScalar& atol
                  = Eigen::NumTraits<typename DerivedA::RealScalar>::epsilon())
{
  return ((a.derived() - b.derived()).array().abs()
          <= (atol + rtol * b.derived().array().abs())).all();
}

关于c++ - 如何在 Eigen 中近似比较 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051367/

相关文章:

javascript - 在 V8 中异步运行 C++ 和 JS 代码

c++ - 将 lambda 表达式转换为函数指针

c++ - 从函数参数构建模板?

matlab - 求解 Ax = B ==> 错误 : Matrix is close to singular or badly scaled 形式的矩阵

opengl - 2D 矩阵到 3D 矩阵

c++ - 使用 Eigen 3 库编写一个以转置作为参数的函数

c++ - 更快地访问 C++ 数组中的随机元素

python - 将代码从 Python 转换为 Julia 后代码无法正常工作

c++ - 为什么这段代码可以编译

c++ - 如何在 Atmel Studio 7 中为 Arduino 使用 Eigen 库?