求伪逆的三种方法:直接,SVD,QR及具体的应用
来源:互联网 发布:交换机基于mac的acl 编辑:程序博客网 时间:2024/06/05 09:43
最近在做波达方向的估计的研究,其中涉及到了奇异矩阵的逆,直接通过matlab中的pinv()和inv()计算得到的结果误差较大,于是就诞生了这篇文章,当然,全文并非全部原创。奇异矩阵的求逆主要有三种方法:直接求解;SVD分解;QR分解,下面分别看看这三种方法的具体实现。并附上自己解决的问题,仅供大家参考。
① 直接求解:
求导,令导数为0,结果如下: InvA=(ATA)-1AT
% 直接求伪逆
InvA = inv(A'*A)*A';
② SVD求解
%% SVD分解求伪逆
% 原理和公式:1. SVD分解得到的矩阵:U和V是正交阵,S是对角阵
% 2. 正交阵的逆=转置
% 3. 对角阵的逆=非零元素求倒
% Step1: 求解A的SVD分解
[U,S,V] = svd(A); % A = U*S*V'
% Step2: 将S中的非零元素求倒
T=S;
T(find(S~=0)) = 1./S(find(S~=0));
% Step3: 求invA
svdInvA = V * T' * U';
③ QR求解
%% QR分解求伪逆
% 适用于稀疏矩阵
% 原理和公式:1. QR分解得到的矩阵:Q是正交阵,R是非奇异上三角阵
% 2. 正交阵的逆=转置
% 3. 上(下)三角矩阵的逆也仍然是上(下)三角矩阵。不必用高斯消去法,向前替换法解方程。
% 但是具体的我不知道怎么用程序来写,这里仍旧用了matlab的函数。
[Q,R] = qr(A);
InvR = inv(R'*R)*R';
qrInvA =InvR*Q';
解决的问题:
通过(22)和(23)式要求psai_x和psai_y,但是和是 异矩阵,通过matlab中的pinv()和inv()函数计算的结果误差较大,于是通过上面提到的三种计算奇异矩阵的伪逆的方法很好的解决了我的问题。
阅读全文
0 0
- 求伪逆的三种方法:直接,SVD,QR及具体的应用
- 求伪逆的三种方法:直接,SVD,QR及具体的应用
- 求伪逆的三种方法:直接,SVD,QR
- 数值分析--矩阵QR分解的三种方法
- 矩阵的QR分解(三种方法)Python实现
- SVD分解及应用的直观理解
- SVD分解及应用的直观理解
- Android应用:Service开发实例(三)之Service的具体应用方法
- 三种静态查找的思路及具体实现
- 虚拟机的三种通讯方式及具体实施
- 三种静态查找的思路及具体实现
- SVD应用的经典例子
- 关于SVD的应用详解
- PHP strtotime函数的具体应用方法
- 拓扑排序的具体几种方法及
- QR 码的应用和创新(图文)
- Android应用--QR的生成(二维码)
- Android应用--QR的生成(二维码)
- 生成一组不重复随机数
- Java中常被问到的问题
- 第一次写博客,谈谈对java的看法
- 【unity学习笔记】 unity常见错误解决方案
- 关于JetPack L4T Component Manager下载出错问题的解决办法
- 求伪逆的三种方法:直接,SVD,QR及具体的应用
- Qt 之 QSqlDriver Class
- 【javascript知识进阶】变量声明和提升规则和自定义作用域
- HDFS数据块
- 你知道line-height怎么用么?
- 面向对象三大特征
- Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别
- 一个基础的以太坊介绍
- Java的ListIterator的privious()方法解说