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/