求伪逆矩阵c++代码(Eigen库)

非方阵的矩阵的逆矩阵 pseudoInverse

伪逆矩阵是逆矩阵的广义形式,广义逆矩阵

matlab中是pinv(A)--》inv(A)。

#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; 
}

求伪逆矩阵c++代码(Eigen库)

矩阵的伪逆(pseudoinverse) - 冯瑾亓 - 博客园 https://www.cnblogs.com/Rambler1995/p/5583645.html

矩阵伪逆介绍及C++/OpenCV/Eigen的三种实现,不能直接运行 - CSDN博客 https://blog.csdn.net/fengbingchun/article/details/72874623

上面那个的开源代码GitHub - fengbingchun/Eigen_Test: Eigen's usage https://github.com/fengbingchun/Eigen_Test
原文链接: https://www.cnblogs.com/wxl845235800/p/8892681.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/272645

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午10:55
下一篇 2023年2月14日 下午10:55

相关推荐