非方陣的矩陣的逆矩陣 pseudoInversehtml
僞逆矩陣是逆矩陣的廣義形式,廣義逆矩陣ios
matlab中是pinv(A)--》inv(A)。git
#include "stdafx.h" #include<iostream> #include<Eigen/Core> #include<Eigen/SVD> template<typename _Matrix_Type_> _Matrix_Type_ pseudoInverse(const _Matrix_Type_ &a, double epsilon = std::numeric_limits<double>::epsilon()) { Eigen::JacobiSVD< _Matrix_Type_ > svd(a ,Eigen::ComputeThinU | Eigen::ComputeThinV); double tolerance = epsilon * std::max(a.cols(), a.rows()) *svd.singularValues().array().abs()(0); return svd.matrixV() * (svd.singularValues().array().abs() > tolerance).select(svd.singularValues().array().inverse(), 0).matrix().asDiagonal() * svd.matrixU().adjoint(); } int main() { Eigen::MatrixXd A(2,3); A<< 1, 2, 3, 4, 5, 7; std::cout<<A<<std::endl<<std::endl; std::cout<<pseudoInverse(A)<<std::endl; Eigen::MatrixXd B(3,2); B<< 1, 2, 3, 4, 5, 7; std::cout<<B<<std::endl<<std::endl; std::cout<<pseudoInverse(B)<<std::endl; getchar(); return 0; }
矩陣的僞逆(pseudoinverse) - 馮瑾亓 - 博客園 https://www.cnblogs.com/Rambler1995/p/5583645.htmlgithub
矩陣僞逆介紹及C++/OpenCV/Eigen的三種實現,不能直接運行 - CSDN博客 https://blog.csdn.net/fengbingchun/article/details/72874623spa
上面那個的開源代碼GitHub - fengbingchun/Eigen_Test: Eigen's usage https://github.com/fengbingchun/Eigen_Test.net