【矩阵】RQ/QR 分解
Multiple View Geometry in Computer Vision A.4.1.1 (page 579)
将一个 3x3 矩阵 $ A $ 进行 RQ 分解是将其分解成为一个上三角阵 $ R $ 与一个正交阵(orthogonal matrix) $ Q $ 的乘积。要求矩阵 $ A $ 的秩为3,即满秩。
所谓矩阵 $ Q $ 正交是指 $ Q^TQ=I $, $ Q $ 可以看作是一个旋转矩阵。此旋转矩阵由三个子旋转矩阵点乘而来,即 $ Q = Q_xQ_yQ_z $ 。$ Q_x, Q_y, Q_z $ 如下:
\[
Q_x = \begin{bmatrix}
1 & 0 & 0 \\
0 & \cos (roll) & -\sin (roll)\\
0 & \sin (roll) & \cos (roll) \\
\end{bmatrix}
\]
\[
Q_y = \begin{bmatrix}
\cos (pitch) & 0 & \sin (pitch) \\
0 & 1 & 0 \\
-\sin (pitch) & 0 & \cos (pitch) \\
\end{bmatrix}
\]
\[
Q_z = \begin{bmatrix}
\cos (yaw) & -\sin (yaw) & 0 \\
\sin (yaw) & \cos (yaw) & 0 \\
0 & 0 & 1 \\
\end{bmatrix}
\]
将矩阵 $ A $ 右乘一个矩阵,相当于将 $ A $ 进行一次初等列变换。
由 \[ A = RQ = RQ_z^TQ_y^TQ_x^T \] 得 \[ AQ_xQ_yQ_z = R \]
将 $ A $ 右乘 $ Q_x $ 是将 $ A $ 的第一列保持不变,第二列和第三列进行线性组合,解释如下:
\[ A = \begin{bmatrix}
A_{11} & A_{12} & A_{13} \\
A_{21} & A_{22} & A_{23} \\
A_{31} & A_{32} & A_{33}
\end{bmatrix} \]
\[ AQ_x = \begin{bmatrix}
A_{11} & cA_{12} + sA_{13} & -sA_{12} + cA_{13} \\
A_{21} & cA_{22} + sA_{23} & -sA_{22} + cA_{23} \\
A_{31} & cA_{32} + sA_{33} & -sA_{32} + cA_{33}
\end{bmatrix} \]
上式省略了 $ roll $ ,将 $ [AQ_x]_{32} $ 置为0。加上 \(c^2 + s^2 = 1\) 的条件,可以算出 \(c, s\),求得 $ Q_x $ 。
$ AQ_x $ 的结果右乘 $ Q_y $ 是将第二列保持不变,第一列和第三列进行线性组合,将 $ [AQ_xQ_y]_{31} $ 置为0,求得 $ Q_y $ 。
$ AQ_xQ_y $ 的结果右乘 $ Q_z $ 是将第三列保持不变,第一列和第二列进行线性组合,将 $ [AQ_xQ_yQ_z]_{21} $ 置为0,求得 $ Q_x $ 。
经过三次右乘(初等列变换)可以得到上三角阵 $ R $ 。
最后由计算得到的 $ Q_x, Q_y, Q_z $ 通过 $ Q = Q_z^TQ_y^TQ_x^T $ ,得到 $ A $ 的 RQ 分解。
对于 QR、LQ、QL 分解使用类似的方式进行计算。QR 与 QL 分解是将矩阵 $ A $ 进行初等行变换。
【矩阵】RQ/QR 分解的更多相关文章
- 矩阵的QR分解
#include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> # ...
- 矩阵的QR分解(三种方法)Python实现
1.Gram-Schmidt正交化 假设原来的矩阵为[a,b],a,b为线性无关的二维向量,下面我们通过Gram-Schmidt正交化使得矩阵A为标准正交矩阵: 假设正交化后的矩阵为Q=[A,B],我 ...
- QR 分解
将学习到什么 介绍了平面旋转矩阵,Householder 矩阵和 QR 分解以入相关性质. 预备知识 平面旋转与 Householder 矩阵是特殊的酉矩阵,它们在建立某些基本的矩阵分解过程中起着 ...
- 机器学习中的矩阵方法03:QR 分解
1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其 ...
- 矩阵QR分解
1 orthonormal 向量与 Orthogonal 矩阵 orthonormal 向量定义为 ,任意向量 相互垂直,且模长为1: 如果将 orthonormal 向量按列组织成矩阵,矩阵为 ...
- QR分解与最小二乘
主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一.QR分解 R分解法是三种将矩阵分解的方式之一.这种方式,把矩阵分解成一个正交矩阵与一个上三角矩阵的 ...
- QR分解与最小二乘(转载自AndyJee)
转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...
- QR分解
从矩阵分解的角度来看,LU和Cholesky分解目标在于将矩阵转化为三角矩阵的乘积,所以在LAPACK种对应的名称是trf(Triangular Factorization).QR分解的目的在 ...
- QR分解迭代求特征值——原生python实现(不使用numpy)
QR分解: 有很多方法可以进行QR迭代,本文使用的是Schmidt正交化方法 具体证明请参考链接 https://wenku.baidu.com/view/c2e34678168884868762d6 ...
随机推荐
- org.hibernate.UnknownEntityTypeException: Unable to locate persister: com.hibernate2.pojo.News at org.hibernate.internal.SessionFactoryImpl.locateEntityPersister(SessionFactoryImpl.java:797)
使用的是hibernate5的方法: ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySetti ...
- HDU2883_kebab
很好的题目. 有不多于200个任务,每个任务要在si到ei这个时间段内完成,每个任务的任务量是ti*ni,只有一台机器,且其单位时间内可完成的任务量为m. 现在问你,能否使所有的任务全部在规定的时间段 ...
- python selenium2 窗口切换实例
遍历hao123中某一区域的所有链接,点击每个链接时,会打开新的窗口,获取新窗口的title后关闭窗口,切换到初始窗口继续打开下一个链接 代码如下: #coding=utf-8 from seleni ...
- hihocoder1639 图书馆 [数学]
已知数组a[]及其和sum, 求sum! / (a1!a2!...an!) 的个位数的值. 求某数的逆元表写成了求某数阶乘的逆元表,故一直没找到错误. P 是质数的幂B 表示质数,P 表示模数,cal ...
- 【刷题】BZOJ 2959 长跑
Description 某校开展了同学们喜闻乐见的阳光长跑活动.为了能"为祖国健康工作五十年",同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动.一时间操场上 ...
- Corosync+Pacemaker+crmsh构建Web高可用集群
一.概述: 1.1 AIS和OpenAIS简介 AIS应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放.高移植性的程序接口.是在实现高可用 ...
- Libssh认证绕过CVE-2018-10933漏洞复现
0x00 漏洞描述 libssh 0.6 及以上的版本,在服务端的代码实现中存在身份认证绕过漏洞.在向服务端认证的流程中,攻击者通过将 SSH2_MSG_USERAUTH_REQUEST 消息替换为 ...
- maven管理工具
Maven解决的问题: 1. 使用maven前搭建项目需要引入各种jar包,并且还可能有jar包冲突的问题 解决jar包冲突的方式: 1. 第一声明优先原则 2. 路径近者优先原则. 直接依赖路径比传 ...
- (转)maven镜像详解
背景:一直以来,对maven镜像不是特别的了解,这里通过对网上资料的收集,做个详细的记录. 镜像介绍 如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像.换句话说,任何一个可以从仓 ...
- c++优先队列(堆)
1.最小堆.最大堆 priority_queue<int,vector<int>,greater<int> > f; //最小堆(后面的数逐渐greater) pr ...