-
2021-04-20 03:10:33
伪逆矩阵是逆矩阵的广义形式。由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但在matlab里可以用函数pinv(A)求其伪逆矩阵。基本语法为X=pinv(A),X=pinv(A,tol),其中tol为误差,pinv为pseudo-inverse的缩写:max(size(A))*norm(A)*eps。函数返回一个与A的转置矩阵A' 同型的矩阵X,并且满足:AXA=A,XAX=X.此时,称矩阵X为矩阵A的伪逆,也称为广义逆矩阵。pinv(A)具有inv(A)的部分特性,但不与inv(A)完全等同。 如果A为非奇异方阵,pinv(A)=inv(A),但却会耗费大量的计算时间,相比较而言,inv(A)花费更少的时间。
机器视觉中,finite camera的投影矩阵P为一个3*4,秩为3 的矩阵,矩阵P的伪逆如下:
矩阵P的伪逆为:
如果A列满秩,那么pinv(A)=(A'*A)^{-1}*A'。
如果A行满秩,那么pinv(A)=pinv(A')'。
如果秩亏损,那么只好先做奇异值分解A=UDV',U,V是正交阵,D是对角阵。
然后取对角阵S,如果D(i,i)=0,那么S(i,i)=0,如果D(i,i)<0或者D(i,i)>0,那么S(i,i)=1/D(i,i)。于是pinv(A)=VSU'。
-----------------------------------------------------------------------------------------------------------
原文:https://blog.csdn.net/u014260892/article/details/38581175
更多相关内容 -
求矩阵伪逆的matlab方法,手把手教学
2020-12-17 22:29:361.定义矩阵a 2.求b,c b为a的线性无关的两列 c为a的行最简的线性无关的两行 3.求b的左逆和c的右逆 左逆和右逆的具体见一下例题: 4.求出结果即可 或者一步到位 有时候会出现小数,转变表达形式,敲入 format ...1.定义矩阵a
2.求b,c
b为a的线性无关的两列
c为a的行最简的线性无关的两行
3.求b的左逆和c的右逆
左逆和右逆的具体见一下例题:
4.求出结果即可
或者一步到位
有时候会出现小数,转变表达形式,敲入
format cat就会以分数输出结果 -
【MATLAB】几种求矩阵伪逆的方法
2020-04-30 21:15:41几种求矩阵伪逆的方法 A*x=y当A不可逆如何解x 求伪逆有五种方法,左右同时乘以A’,’chol()分解,qr() 分解,svd()分解和pinv()求伪逆,下面来比较一下哪个最优秀。 如果A是个355行3列的矩阵,经过计算,五个...几种求矩阵伪逆的方法
A*x=y当A不可逆如何解x
求伪逆有五种方法,左右同时乘以A’,’chol()分解,qr() 分解,svd()分解和pinv()求伪逆,下面来比较一下哪个最优秀。
如果A是个355行3列的矩阵,经过计算,五个方式计算结果相同,对模型的拟合都是没有影响的。
如果A是个355行12列的矩阵(更高维),那么根据我对数据的拟合,结果如下:深蓝线是数据,绿色的线是两边同时×A’,浅蓝色的线是pinv分解拟合出的模型,红线是qr拟合出的模型,黄线是svd分解拟合出的模型。这么浅显的看的话在高维下svd和两边同时×A’胜出,那么他们究竟谁更胜一筹,我们看一下第一范式,第二范式和Inf范式检验的结果:
可见在高维情况下是svd分解更胜一筹(范式结果低),低维下不要轻易用两边同时×A’,因为会出奇异矩阵警告。
几种求伪逆的方法如下(matlab代码):
result=(A'*A)\(A'*y) %两边同时乘A’ result_pinv=pinv(A)*y %pinv %svd [U,S,V] = svd(A); T=S; T(find(S~=0)) = 1./S(find(S~=0)); svdInvA = V * T' * U'; alpha_svd=svdInvA*y; %qr [Q,R] = qr(A); InvR = inv(R'*R)*R'; qrInvA =InvR*Q'; alpha_qr=qrInvA*y;
————————————————
原文链接:https://blog.csdn.net/qq_41448372/article/details/105742441
-
逆、伪逆、左右逆、最小二乘、投影矩阵
2021-04-22 11:12:32主要内容:矩阵的逆、伪逆、左右逆矩阵的左逆与最小二乘左右逆与投影矩阵一、矩阵的逆、伪逆、左右逆1、矩阵的逆定义:设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=I。 则我们称B是A...主要内容:
矩阵的逆、伪逆、左右逆
矩阵的左逆与最小二乘
左右逆与投影矩阵
一、矩阵的逆、伪逆、左右逆
1、矩阵的逆
定义:
设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=I。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。
可逆条件:
A是可逆矩阵的充分必要条件是,即可逆矩阵就是非奇异矩阵。(当
时,A称为奇异矩阵)
性质:
矩阵A可逆的充要条件是A的行列式不等于0。
可逆矩阵一定是方阵。
如果矩阵A是可逆的,A的逆矩阵是唯一的。
可逆矩阵也被称为非奇异矩阵、满秩矩阵。
两个可逆矩阵的乘积依然可逆。
可逆矩阵的转置矩阵也可逆。
矩阵可逆当且仅当它是满秩矩阵。
求逆方法:
伴随矩阵法、初等变换法
2、矩阵的伪逆和左右逆
伪逆矩阵:
伪逆矩阵是逆矩阵的广义形式。由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但在matlab里可以用函数pinv(A)求其伪逆矩阵。基本语法为X=pinv(A),X=pinv(A,tol),其中tol为误差,pinv为pseudo-inverse的缩写:max(size(A))*norm(A)*eps。函数返回一个与A的转置矩阵A' 同型的矩阵X,并且满足:AXA=A,XAX=X.此时,称矩阵X为矩阵A的伪逆,也称为广义逆矩阵。pinv(A)具有inv(A)的部分特性,但不与inv(A)完全等同。 如果A为非奇异方阵,pinv(A)=inv(A),但却会耗费大量的计算时间,相比较而言,inv(A)花费更少的时间。
伪逆矩阵求法:
A 为m*n矩阵,r代表矩阵的秩:
若矩阵A是方阵,且|A|!=0,则存在AA-1=E;
若A不是方阵,或者|A|=0,那么只能求A的伪逆,所谓伪逆是通过SVD计算出来的;
pinv(A)表示A是伪逆:
如果A列满秩,列向量线性无关,r=n,Ax=b为超定方程组,存在0个或1个解,那么
,因为
,因此也称为左逆;
如果A行满秩,行向量线性无关,Ax=b为欠定方程组,存在0个或无穷个解,那么
,因为
,因此也称为右逆;
如果秩亏损,那么只好先做奇异值分解
,U,V是正交阵,D是对角阵;然后取对角阵S,如果D(i,i)=0,那么S(i,i)=0,如果D(i,i)<>0,那么S(i,i)=1/D(i,i)。于是
;
二、矩阵的左逆与最小二乘
其实,最小二乘就是一个超定方程组的求解问题,根据上述的了解,超定方程组的求解方法之一就是通过求伪逆的形式,具体来说就是求左逆。即:
最小二乘也可以从几何的角度来考虑,那就是下面要说的投影矩阵。
三、左右逆与投影矩阵
左逆中,
,如果将左逆写在A右边将得不到单位矩阵了,那么
是什么?是在A矩阵列空间(A矩阵各列张成的子空间)投影的投影矩阵,它会尽量靠近单位矩阵,一个投影矩阵很想成为单位矩阵,但不可能做到。
右逆中,
,如果将右逆写在A左边也不是单位矩阵了,那
是什么?是在A矩阵行空间(A矩阵各行张成的子空间)投影的投影矩阵。
四、参考文章
-
MATLAB与线性代数--逆矩阵与伪逆矩阵
2020-03-25 13:38:06MATLAB与线性代数:逆矩阵求解方程组的解 -
Pseudoinverse:伪逆矩阵的函数-matlab开发
2021-05-29 07:44:29这些函数专门用于在低秩的情况下执行逆运算 -
伪逆矩阵函数pinv伪逆矩阵的MATLAB定义.ppt
2020-12-23 15:25:49伪逆矩阵函数pinv伪逆矩阵的MATLAB定义.ppt(2)正交(QR)分解函数 将矩阵A分解为一个正交矩阵与另一个矩阵的乘积称为矩阵A的正交分解。 格式一:[Q, R]=qr(A) 功能:产生与A同维的上三角矩阵R和一个实正交矩阵或复归... -
Pseudo-inverse:为伪逆计算目的分解矩阵-matlab开发
2021-06-01 15:56:28对伪逆矩阵进行因式分解以求解正规方程: A*x = b 与MATLAB pinv相比,伪逆有两个优点: - PINV 需要昂贵的 SVD - PINV 不适用于稀疏矩阵。 解 x 最小化残差 |Ax - b| 的 2-范数。 在欠定系统的情况下,即 rank... -
matlab:inv,pinv逆与伪逆
2017-03-11 16:42:25对于奇异矩阵或者非方阵,并不存在逆矩阵,但可以使用pinv(A)求其伪逆 inv: inv(A)*B 实际上可以写成A\B B*inv(A) 实际上可以写成B/A 这样比求逆之后带入精度要高 A\B=pinv(A)*B A/B=A*pinv(B) pinv: X=... -
求伪逆矩阵c++代码(Eigen库)
2018-04-20 18:08:00伪逆矩阵是逆矩阵的广义形式,广义逆矩阵 matlab中是pinv(A)--》inv(A)。 #include "stdafx.h" #include<iostream> #include<Eigen/Core> #include<Eigen/SVD> template<... -
伪逆矩阵最小二乘
2021-03-03 00:10:02矩阵 A 的伪逆定义为: 计算伪逆的实际算法没有基于这个定义,而是使用下面的公式: 其中,矩阵 U,D 和 V 是矩阵A奇异值分解后得到的矩阵。对角矩阵 D 的伪逆D + 是其非零元素取倒数之后再转置得到的。 下图是伪... -
MATLAB入门之求数组行列式、矩阵的逆(伪逆)、矩阵的秩
2020-02-12 22:34:40det 计算数组行列式 >> A=[1 2 3;4 5 9;8 7 6] A = 1 2 3 4 5 9 8 7 6 >> det(A) ans = 27 inv 计算矩阵的逆 A = 1 2 3 4 5 9 8... -
C++实现复数矩阵求逆 matlab inv
2020-07-06 11:10:57C++实现复数矩阵求逆 matlab inv一、引言二、原理2.1 实数矩阵求逆2.2 复数矩阵求逆三、代码四、测试 一、引言 之前偶尔一次有用到将matlab转为C++语言的需求,其中matlab有一个inv函数可以非常方便的求矩阵的逆,... -
C#计算伪逆矩阵(PseudoInverse)
2021-07-20 13:57:57我们用的是MathNet.Numerics命名空间里面的Matrix.PseudoInverse()方法计算伪逆,跟Python的numpy.linalg.pinv或者Matlab的pinv是一样的。 double[,] xEX = { { 1.0, 0,0 ,0,0,6.0}, { 0, -1,0 ,0,0,17.0}, { 0,... -
逆矩阵、伪逆矩阵:数据的压缩和复原
2019-04-02 11:09:31逆矩阵、伪逆矩阵、数据的压缩和复原:这一块知识虽然很简单,但在光学各种实验情况下经常用到,特此总结。 矩阵的乘法(观测矩阵):C = A* B C:M*1 A:M*N B:N*1 A可以理解为一个转化矩阵,或者说 观测... -
伪逆矩阵
2015-11-18 08:29:30本文主要介绍伪逆矩阵的定义、求法和相关的应用,违逆矩阵可应用于信号的检测和干扰消除等 -
关于matlab中矩阵与逆矩阵为何相乘不等于单位阵的问题
2018-07-17 16:15:40当我们用matlab计算矩阵和逆矩阵时,结果往往不等于单位阵 如下: >> a=magic(4) a = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> b=a*inv(a) 警告: 矩阵接近奇异值,或者... -
利用矩阵的逆(伪逆)与除法求解
2022-02-16 11:52:13利用矩阵的逆(伪逆)与除法求解: 对于线性方程组Ax=b,若其为恰定方程组且A是非奇异的,则求x最明显的方法便是利用矩阵的逆,即x=A\b;若不是恰定方程组,则可利用伪逆来求其一个特解。 运用pinv命令求伪逆: ... -
使用迭代方法求矩阵伪逆
2011-01-27 22:06:52return the pseudoinverse of A using iterative method. -
更改了求伪逆后,说该矩阵为稀疏矩阵,不可求伪逆,该如何解决,或者前面左除有哪种方法可以代替
2022-03-26 21:29:28mis = V .* conj(Ybus * V) - Sbus; F = [ real(mis([pv; pq])); imag(mis(pq)) ]; [dSbus_dVm, dSbus_dVa] = dSbus_dV(Ybus, V); j11 = real(dSbus_dVa([pv; pq], [pv; pq])); j12 = real(dSbus_dVm([pv;... -
矩阵伪逆的opencv实现
2019-12-06 09:57:01则我们称B是A的逆矩阵,而A则被称为可逆矩阵。 可逆条件: A是可逆矩阵的充分必要条件是,即可逆矩阵就是非奇异矩阵。(当 时,A称为奇异矩阵) 性质: -矩阵A可逆的充要条件是A的行列式不等于0。 -可逆矩阵一定是... -
matlab之逆(inv)与伪逆(pinv)
2020-03-24 11:11:50在了解逆和伪逆之前,我们先来了解一下是线性代数里面奇异矩阵和非奇异矩阵是什么。 首先,矩阵是方阵,即矩阵的行数和列数相等的矩阵。若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵。 奇异矩阵 奇异矩阵的... -
pinv(matlab 伪逆)
2021-01-27 07:42:02pinv(B)求的是矩阵B的Moore-Penrose逆,是B的一种广义逆,也就是你说的伪逆,该广义逆满足四个条件:A*B*A = A B*A*B = B A*B 是海森矩阵 B*A是海森矩阵。这个在.打开Pinv函数,发现里面分情况讨论:若N>M;则... -
matlab机械臂逆运动学代码-Smart-Robotic-Arm:智能机器人手臂
2021-05-25 04:29:30matlab机械臂逆运动学代码智能机器人手臂 嗨,这是一个使用深度学习作为其对象识别部分的机械臂项目。 该机器人拍摄工作空间的图像,并可以识别不同的对象。 当时我还没有任何3D打印设备,机身全部由4毫米压克力板制... -
矩阵的逆、伪逆
2018-07-23 14:10:09则我们称B是A的逆矩阵,而A则被称为可逆矩阵。 可逆条件: A是可逆矩阵的充分必要条件是,即可逆矩阵就是非奇异矩阵。(当 时,A称为奇异矩阵) 性质: 矩阵A可逆的充要条件是A的行列式不等于0。 可逆矩阵... -
矩阵的逆、伪逆、左右逆
2018-05-27 16:23:43伪逆矩阵求法: A 为m*n矩阵,r代表矩阵的秩: 若矩阵A是方阵,且|A|!=0,则存在AA-1=E; 若A不是方阵,或者|A|=0,那么只能求A的伪逆,所谓伪逆是通过SVD计算出来的; pinv(A)表示A是伪逆: 如果A列满秩,列向量... -
matlab调用cuda中的cublas对矩阵进行求逆
2020-11-23 17:12:22matlab调用cuda中的cublas对矩阵进行求逆,我这个能编译通过但是无法进行求逆,有没有大神指教一下 2. 我这个是求实数矩阵的逆,有没有复数矩阵的求逆mexcuda程序 #include "mex.h" #include <cuda_runtime.h>... -
Matlab/Octave 求矩阵的M-P逆(pinv)
2019-12-17 23:01:34目录1 使用pinv命令计算非方阵的广义逆2 M-P逆计算公式 ...pinv被称为伪逆,其实就是Moore-Penrose逆,因为任何矩阵都唯一存在M-P逆,若为方矩,M-P逆和逆相等。 A=[1 1 0 1; 0 1 1 0; 1 2 1 1] A = 1 1 0 1 ... -
C++SVD分解求伪逆 (Eigen库)(附C++代码)
2019-03-28 21:52:18SVD求解矩阵伪逆过程 首先对矩阵A进行SVD分解得到U, D, V三个矩阵,其中D为列矩阵,是从上到下,由大到小排列的A矩阵的奇异值。 若D矩阵中元素个数为n则原矩阵有n个奇异值,构建大小为V.cols() * U.cols()的S...