18 #include <Eigen/Dense>
27 template <
typename _Matrix_Type_>
29 Eigen::JacobiSVD<_Matrix_Type_> svd(
30 pinvmat, Eigen::ComputeFullU | Eigen::ComputeFullV);
31 _Matrix_Type_ m_sigma = svd.singularValues();
33 double pinvtoler = 1.e-6;
35 _Matrix_Type_ m_sigma_inv =
36 _Matrix_Type_::Zero(pinvmat.cols(), pinvmat.rows());
37 for (
long i = 0; i < m_sigma.rows(); ++i) {
38 if (m_sigma(i) > pinvtoler) m_sigma_inv(i, i) = 1.0 / m_sigma(i);
40 pinvmat = (svd.matrixV() * m_sigma_inv * svd.matrixU().transpose());
Definition: abstract-curve.hpp:16
void PseudoInverse(_Matrix_Type_ &pinvmat)
Definition: MathDefs.h:28