【矩阵】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 ...
随机推荐
- Python基础【3】:Python中的深浅拷贝解析
深浅拷贝 在研究Python的深浅拷贝区别前需要先弄清楚以下的一些基础概念: 变量--引用--对象(可变对象,不可变对象) 切片(序列化对象)--拷贝(深拷贝,浅拷贝) 我是铺垫~ 一.[变量--引用 ...
- Embarcadero Delphi 7 Enterprise 7.0.4.453 中文版
在 win7下可能报错请大家按下面的方式 delphi7运行不正常的提示unable to rename'c:\program files\Borland\delphi7\Bin\delphi32.$ ...
- MySQL中varchar最大长度是多少
一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...
- Qss 样式表的尝试
QLineEdit{ border:1px solid #137eb6; padding:2px; background-color:#F5F5F5; } QToolTip{ border:1px s ...
- Qt环境配置 + Qt使用教程
官方下载链接有以下: http://download.qt.io/official_releases/qt/5.8/5.8.0/ http://download.qt.io/official_rele ...
- 【51Nod1773】A国的贸易 解题报告
[51Nod1773]A国的贸易 Description 给出一个长度为 \(2^n\) 的序列,编号从\(0\)开始.每次操作后,如果 \(i\) 与 \(j\) 的二进制表示只差一位则第 \(i\ ...
- HDU.1796 How many integers can you find ( 组合数学 容斥原理 二进制枚举)
HDU.1796 How many integers can you find ( 组合数学 容斥原理 二进制枚举) 题意分析 求在[1,n-1]中,m个整数的倍数共有多少个 与 UVA.10325 ...
- Linux日常维护命令
对于程序员来说,掌握一些基本的Linux命令是必不可少的,即使现在用不到,在不久的将来也应该会用到.由于Linux有很多命令,每个命令基本可以用一篇文章介绍,所以本文仅总结一些常用命令的常用用法,如有 ...
- 【Asp.net入门02】搭建Asp.net开发环境
本节主要讲解: 什么是asp.net asp.net开发和运行环境介绍 1.什么是ASP.NET Asp.net不是一种编程语言,而是一种开发技术.我们可以利用这种技术所提供的类库,使用C#或者VB编 ...
- tp5.1 高级查询之 表里2字段比较大小
$map = [ 'status' => 1, 'is_show' => 1,]; $result = Db::name('coupon') ->where($map) ->w ...