【矩阵】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 ...
随机推荐
- 关于svn和maven结合使用的讨论
目前项目组在开发一个项目,由多个子模块构成,构建工具是maven,版本控制工具是svn.本文想对如何结合使用maven和svn提出一点初步的想法 一.只有svn的情况 首先考虑没有maven的情况.这 ...
- Spring Boot快速搭建Spring框架
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development a ...
- P4611 [COCI2011-2012#7] TRAMPOLIN
题目背景 有很多超级英雄:蝙蝠侠,蜘蛛侠,超人等.其中,有一位叫牛.今天他想模仿蜘蛛侠,所以他选择了一排高大的摩天楼来跳. 题目描述 具体而言,他选择了一个由 N 个摩天大楼构成的序 列,从左到右编号 ...
- Just Another Problem UVA - 11490(枚举)
题意: 你有s个士兵,并打算把他们排成一个r行c列,但有两个"洞"的矩形方队,以迷惑敌人(从远处看,敌人可能误以为一共有r*c个士兵).洞是两个大小相同的正方形,为了隐蔽性更强,方 ...
- 【django基础之ORM,增删改查】
一.定义 1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候, ...
- Linux编程中 #define _XOPEN_SOURCE的作用
[误解]#define _XOPEN_SOURCE决不是简单的宏定义它是使程序符合系统环境的不可缺少的部分 [概念]Glibc 所实现全部或部分规范下的功能有:1.ISO C: C语言国际标准. 2. ...
- 【bzoj4199】【Noi2015】品酒大会
题解 SA+并查集 把ht按大小倒序加入,并查集合并维护答案的变化: SAM 翻转串,求出SAM的parent树就是后缀树,两个串的最长公共后缀是他们lca的len值: 考率一个节点x,那么它子树里的 ...
- C#线程篇---线程池如何管理线程(6完结篇)
C#线程基础在前几篇博文中都介绍了,现在最后来挖掘一下线程池的管理机制,也算为这个线程基础做个完结. 我们现在都知道了,线程池线程分为工作者线程和I/O线程,他们是怎么管理的? 对于Microsoft ...
- RF - 完整用例展示
将重复性动作进行封装为keyword,在测试用例中调用keyword. *** Settings *** Documentation Simple example using SeleniumLibr ...
- Java入门系列:处理Json格式数据
本节主要讲解: 1)json格式数据处理方法 2)第三方工具包的使用方法 3)java集合数据类型 [项目任务] 编写一个程序,显示未来的天气信息. [知识点解析] 为了方便后面代码的分析,先需要掌握 ...