-
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
更多相关内容 -
Pseudoinverse:伪逆矩阵的函数-matlab开发
2021-05-29 07:44:29这些函数专门用于在低秩的情况下执行逆运算 -
MATLAB与线性代数--逆矩阵与伪逆矩阵
2020-03-25 13:38:06MATLAB与线性代数:逆矩阵求解方程组的解求逆矩阵与伪逆矩阵
矩阵
A
的逆矩阵用
表示,并且满足下面的关系:
看下面的矩阵方程:
如果
A
的逆矩阵存在,那么解可以写成:
在MATLAB
输入下面的命令就可以计算矩阵A
的逆矩阵
但是逆矩阵并不一定存在,所以我们可以用矩阵的行列式来判断逆矩阵是否存在,如果
那么逆矩阵不存在,这时我们说此矩阵是一个奇异矩阵。
下面是一个2x2
矩阵的例子
首先检查矩阵的行列式:>> A = [2 3; 4 5]; >> det(A) ans = -2
由于行列式不等于0,此矩阵的逆矩阵存在,下面进行逆矩阵的求解:
>> inv(A) ans = -2.5000 1.5000 2.0000 -1.0000
又如:
>> S = [1 0 -1 2; 4 -2 -3 1;0 2 -1 1;0 0 9 8]; >> det(S) ans = -108
行列式不等于0,逆矩阵T存在:
>> T = inv(S) T = -0.9259 0.4815 0.4815 0.1111 -0.6296 0.1574 0.6574 0.0556 -0.5926 0.1481 0.1481 0.1111 0.6667 -0.1667 -0.1667 0
检验一下:
>> S * T ans = 1.0000 0 0 0 0.0000 1.0000 -0.0000 0 0.0000 -0.0000 1.0000 0 0 0 0 1.0000
来自于四舍五入误差,用另一种方式检查可以避免错误:>> T * S ans = 1.0000 0 0 0 0 1.0000 0 0.0000 0 0 1.0000 0 0 0 0.0000 1.0000
用逆矩阵求解方程
考虑方程:
系数矩阵是:>> A =[3 -2; 6 -2] A = 3 -2 6 -2
Ax= b
中的向量b
是:>> b = [5;2] b = 5 2
我们来检查
A
的行列式来确保A
的逆矩阵存在:>> det(A) ans = 6
解为:
>> x = inv(A) * b x = -1.0000 -4.0000
解的特殊情况
如果方程组的个数比未知数的个数少,此时方程组称为欠定。
这意味着方程组有无数解,因此此时方程组只有一些未知数能能够确定下来,不能确定的可以赋予任意值,因此可以得到无限组解。我们举个简单例子
稍微处理可以得到:
在这个方程组中,我们可以为两个变量找到值(x
和z
),第三个变量y
是不确定的。我们可以为y
选择自己喜欢的值,此时方程组就有解了。
另一种方程组存在无限解的情况是当det(A) = 0
时,此时我们引入伪逆矩阵(属于广义矩阵)的概念
解的办法是为未知数给出最小范数实数解,即是说,解向量x
具有最小范数且元素都为实数,我们拿一个线性方程组来举例:
很明显,这个方程具有无限解,我们输入数据:>> A = [3 2 -1;0 4 1]; >> b = [7;2]; >> C = [A b];
现在计算秩:
>> rank(A) ans = 2 >> rank(C) ans = 2
由于这些秩相等,解存在,可以使用左除产生一组解:
>> x = A\b x = 2.0000 0.5000 0
MATLAB
通过把其中一个变量设为0来产生一组解。
此时的矩阵A
不是一个方阵,不能算行列式,所以可以使用伪逆矩阵来解这个方程组。输入以下内容:>> x = pinv(A) * b x = 1.6667 0.6667 -0.6667
MATLAB
使用穆尔-彭罗斯法计算pinv
-
求矩阵伪逆的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
-
伪逆矩阵函数pinv伪逆矩阵的MATLAB定义.ppt
2020-12-23 15:25:49伪逆矩阵函数pinv伪逆矩阵的MATLAB定义.ppt(2)正交(QR)分解函数 将矩阵A分解为一个正交矩阵与另一个矩阵的乘积称为矩阵A的正交分解。 格式一:[Q, R]=qr(A) 功能:产生与A同维的上三角矩阵R和一个实正交矩阵或复归... -
逆、伪逆、左右逆、最小二乘、投影矩阵
2021-04-22 11:12:32主要内容:矩阵的逆、伪逆、左右逆矩阵的左逆与最小二乘左右逆与投影矩阵一、矩阵的逆、伪逆、左右逆1、矩阵的逆定义:设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=I。 则我们称B是A... -
matlab之逆(inv)与伪逆(pinv)
2020-03-24 11:11:50在了解逆和伪逆之前,我们先来了解一下是线性代数里面奇异矩阵和非奇异矩阵是什么。 首先,矩阵是方阵,即矩阵的行数和列数相等的矩阵。若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵。 奇异矩阵 奇异矩阵的... -
伪逆矩阵最小二乘
2021-03-03 00:10:02矩阵 A 的伪逆定义为: 计算伪逆的实际算法没有基于这个定义,而是使用下面的公式: 其中,矩阵 U,D 和 V 是矩阵A奇异值分解后得到的矩阵。对角矩阵 D 的伪逆D + 是其非零元素取倒数之后再转置得到的。 下图是伪... -
Pseudo-inverse:为伪逆计算目的分解矩阵-matlab开发
2021-06-01 15:56:28对伪逆矩阵进行因式分解以求解正规方程: A*x = b 与MATLAB pinv相比,伪逆有两个优点: - PINV 需要昂贵的 SVD - PINV 不适用于稀疏矩阵。 解 x 最小化残差 |Ax - b| 的 2-范数。 在欠定系统的情况下,即 rank... -
逆矩阵、伪逆矩阵:数据的压缩和复原
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本文主要介绍伪逆矩阵的定义、求法和相关的应用,违逆矩阵可应用于信号的检测和干扰消除等 -
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,... -
关于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命令求伪逆: ... -
pinv(matlab 伪逆)
2021-01-27 07:42:02老师给了一个程序,看到pinv的时候有点糊涂,“伪”逆矩阵到底什么意思啊。pinv(B)求的是矩阵B的Moore-Penrose逆,是B的一种广义逆,也就是你说的伪逆,该广义逆满足四个条件:A*B*A = A B*A*B = B A*B 是海森矩阵 B... -
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<... -
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... -
矩阵伪逆的opencv实现
2019-12-06 09:57:01则我们称B是A的逆矩阵,而A则被称为可逆矩阵。 可逆条件: A是可逆矩阵的充分必要条件是,即可逆矩阵就是非奇异矩阵。(当 时,A称为奇异矩阵) 性质: -矩阵A可逆的充要条件是A的行列式不等于0。 -可逆矩阵一定是... -
矩阵的逆、伪逆
2018-07-23 14:10:09则我们称B是A的逆矩阵,而A则被称为可逆矩阵。 可逆条件: A是可逆矩阵的充分必要条件是,即可逆矩阵就是非奇异矩阵。(当 时,A称为奇异矩阵) 性质: 矩阵A可逆的充要条件是A的行列式不等于0。 可逆矩阵... -
矩阵的逆、伪逆、左右逆
2018-05-27 16:23:43由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但在matlab里可以用函数pinv(A)求其伪逆矩阵。基本语法为X=pinv(A),X=pinv(A,tol),其中tol为误差,pinv为pseudo-inverse的缩写:max(size(A))*norm(A)*eps。函数返回一个与A... -
机器学习:伪逆矩阵法
2018-10-11 16:27:57由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但在matlab里可以用函数pinv(A)求其伪逆矩阵。基本语法为X=pinv(A),X=pinv(A,tol),其中tol为误差,pinv为pseudo-inverse的缩写:max(size(A))*norm(A)*eps。函数返回一个与A... -
机器学习笔记 - Moore-Penrose 伪逆
2022-04-20 17:08:06并非所有矩阵都有逆矩阵。逆用于求解方程组,在某些情况下,方程组没有解,因此逆不存在。然而,找到一个最小化误差的近似值是有意义的。例如,使用伪逆找到一组数据点的最佳拟合线。 Moore-Penrose 伪逆是SVD的... -
matlab机械臂逆运动学代码-Smart-Robotic-Arm:智能机器人手臂
2021-05-25 04:29:30matlab机械臂逆运动学代码智能机器人手臂 嗨,这是一个使用深度学习作为其对象识别部分的机械臂项目。 该机器人拍摄工作空间的图像,并可以识别不同的对象。 当时我还没有任何3D打印设备,机身全部由4毫米压克力板制... -
矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵
2018-10-03 15:20:32矩阵的逆、伪逆、左右逆 矩阵的左逆与最小二乘 左右逆与投影矩阵 一、矩阵的逆、伪逆、左右逆 1、矩阵的逆 定义: 设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=I。 则我们称B是A的逆... -
更改了求伪逆后,说该矩阵为稀疏矩阵,不可求伪逆,该如何解决,或者前面左除有哪种方法可以代替
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;... -
MATLAB向量与矩阵
2022-02-05 10:02:31[ ] 引用创建(复制第一行四次的):E=A ( [1,1,1,1] ,:) 行列式与线性系统求解 求解 计算行列式: det(A) 得解(行列式不为零时): A\ b(无限解时通过某一变量为零得出解,本身可为任何值) 通过伪逆矩阵: x=pinv(A) * b ... -
伪逆矩阵(pseudo-inverse)
2014-08-15 10:40:39由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但在matlab里可以用函数pinv(A)求其伪逆矩阵。基本语法为X=pinv(A),X=pinv(A,tol),其中tol为误差,pinv为pseudo-inverse的缩写:max(size(A))*norm(A)*eps。函数返回一个与A...