SLAM学习小组 : 视觉SLAM十四讲 第三讲 + 视觉SLAM理论与实践 第二节

本文深入探讨了SLAM中的矩阵运算,包括线性方程组的解法、QR分解和Cholesky分解的原理。通过编程实例演示了如何使用Eigen库在C++11环境下解决100x100的随机矩阵问题。同时,文章还介绍了旋转矩阵的性质、四元数运算以及罗德里格斯公式的证明,是学习SLAM基础的宝贵资料。
摘要由CSDN通过智能技术生成

一、熟悉Eigen矩阵运算

Wiki Eigen
设线性⽅程 Ax = b,在 A 为⽅阵的前提下,请回答以下问题:

1. 在什么条件下,x 有解且唯⼀?

线性方程组的矩阵满秩(非奇异矩阵)

2. 高斯消元法的原理是什么?

高斯消元法是将方程组中的一方程的未知数用含有另一未知数的代数式表示,并将其代人到另一方程中,这就消去了一未知数,得到一解;或将方程组中的一方程倍乘某个常数加到另外一方程中去,也可达到消去一未知数的目的。消元法主要用于二元一次方程组的求解。
在用系数矩阵表示的线性方程组中,高斯消元的过程就是将原来系数矩阵化为上三角矩阵的过程。主要是用初等变换将某一行倍乘后加到另一行,从而在下三角部分引入零元,变换以后所得线性代数方程组系数矩阵为上三角,很容易用回代求解。

4. QR 分解的原理是什么?

如果实(复)非奇异矩阵A能够化成正交(酉)矩阵Q与实(复)上三角矩阵R的乘积,即A=QR,则称其为A的QR分解。(列满秩矩阵必有QR分解)(当要求R的对角线元素为正时,该分解唯一)
其中Q的列向量是A的列空间的标准正交基,R是一个非奇异可逆的上三角矩阵

5. Cholesky 分解的原理是什么?

Cholesky 分解是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解。它要求矩阵的所有特征值必须大于零,故分解的下三角的对角元也是大于零的。Cholesky分解法又称平方根法,是当A为实对称正定矩阵时,LU三角分解法的变形。

6. 编程实现 A 为 100 × 100 随机矩阵时,⽤ QR 和 Cholesky 分解求 x 的程序。你可以参考本次课用到的 useEigen 例程。

运行环境QT creator

#include <iostream>
using namespace std;
#include <ctime>
// Eigen 部分
#include <eigen3/Eigen/Core>
// 稠密矩阵的代数运算(逆,特征值等)
#include <eigen3/Eigen/Dense>

#define MATRIX_SIZE 100

/****************************
* 本程序演示了 Eigen 基本类型的使用
****************************/

int main( int argc, char** argv )
{
   

    // 解方程
    // 我们求解 matrix_NN * x = v_Nd 这个方程
    // N的大小在前边的宏里定义,它由随机数生成
    // 直接求逆自然是最直接的,但是求逆运算量大
    Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > x;
    Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > x2;

    Eigen:
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值