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

摘要:
伪逆,不是方阵的矩阵的逆矩阵,是逆矩阵的一种广义形式。在matlab中,广义逆矩阵是pinv-“inv”。

非方阵的矩阵的逆矩阵  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库)第1张

矩阵的伪逆(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

免责声明:文章转载自《求伪逆矩阵c++代码(Eigen库)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nginx负载均衡高可用---架构[转] oracle 监听下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

仿射变换及其变换矩阵的理解

原文地址:https://www.cnblogs.com/shine-lee/p/10950963.html 写在前面 2D图像常见的坐标变换如下图所示:这篇文章不包含透视变换(projective/perspective transformation),而将重点放在仿射变换(affine transformation),将介绍仿射变换所包含的各种变换,以...

Matlab学习笔记(三)

二、MATLAB基础知识 (四)数组 MATLAB总是把数组看作存储和运算的基本单位,标量数据也被看作是(1×1)的数组 一维数组的创建 创建一维数组的几种方法:(e_two_14.m) 直接输入法:直接通过空格、逗号和分号来分隔数组元素。 步长生成方法:x=a:inc:b,a和b为一维向量数组的起始数值和终止数值,inc为数组的间隔步长;如果a和b...

矩阵求逆c++实现

矩阵求逆c++实现 http://www.2cto.com/kf/201405/297388.html 2014-05-02     我来说两句    来源:矩阵求逆c++实现   收藏    我要投稿 高斯消元法可以用来找出一个可逆矩阵的逆矩阵。设A 为一个N * N的矩阵,其逆矩阵可被两个分块矩阵表示出来。将一个N * N单位矩阵 放在...

[家里蹲大学数学杂志]第328期詹兴致矩阵论习题参考解答

说明: 1. 大部分是自己做的, 少部分是参考文献做的, 还有几个直接给出参考文献. 2. 如果您有啥好的想法, 好的解答, 热切地欢迎您告知我, 或者在相应的习题解答网页上回复. 哪里有错误, 也盼望您指出. 3. 毕竟大学时学过高等代数, 想多学点矩阵论的东西 (matrix=magic), 就先选这本书看看了. 目录 序言 第一章 预备知识 第...

Matlab数字信号处理

产生方波 clear t=0:0.01:10; subplot(4,1,1) f1=square(t);                       %  产生周期为2pi的方波信号 plot(t,f1) axis([0,10,-1.2,1.2]) subplot(4,1,2) f2=square(t,30);               %  产生周期为...

matlab 矩阵作图 [转]

在论文中咱们会经常看见一类图,比如说多类别文类问题,那么每一个类别分到其他类别都有一写数据,但是分到自己类别的毕竟多,这样计算百分比之后就形成了一个矩阵,如果分类正确率高的话,那么对角线上的元素的值,也就是自己到自己的那一部分,value就大。 我最近也在做多分类问题,要画这样的图,但是发现确实很少有代码,自己画的确实不好看,还牵扯到值的显示和x轴标签的旋...