Eigen库QR分解

  • 基本
  • 实战
  • 其他

在计算光斑中心位置的研究中,选择了高斯中心法,而该方法求解过程中需要用到QR分解。所以在这里记录分享Eigen库的QR分解使用方法。

by HPC_ZY

基本

如一个3x3的矩阵,进行QR分解如下,

// 初始化
MatrixXf A(3 ,3);
A <<0, 1, 2,3, 4, 5,6, 7, 8;
// QR分解
HouseholderQR<MatrixXf> qr;
qr.compute(A);
MatrixXf R = qr.matrixQR().triangularView<Eigen::Upper>();
MatrixXf Q = qr.householderQ();
// 显示
cout << "A = " << endl << A << endl << endl;
cout << "Q = " << endl << Q << endl << endl;
cout << "R = " << endl << R << endl << endl;

对应的MATLAB计算方法如下

% QR分解
A = [0,1,2; 3,4,5; 6,7,8];
[Q,R] = qr(A);

结果对比如下,结果一致,ok

实战

利用高斯中心法计算光斑中心,如感兴趣可见另一篇 《高斯拟合法求光斑中心》

其他

  1. 使用之前当然要先加入头文件 (Eigen下载)
#include <Eigen/Dense>
using namespace Eigen;
  1. 上文C代码中我使用手动赋值的方式,其实对于大矩阵还可以使用循环赋值,如下
MatrixXf A(3 ,3);
for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++)A(i, j) = i*3 + j;cout << "A = " << endl << A << endl << endl;
  1. 欢迎提问评论,谢谢支持

Eigen库QR分解相关推荐

  1. 矩阵的QR分解c语言编程,[矩阵的QR分解系列五] Eigen中的QR分解

    之前介绍的矩阵的三角分解系列介绍了利用矩阵初等变换解决了矩阵三角化问题以及具体的三角分解.但是以初等变换工具的三角分解方法并不能消除病态线性方程组不稳定问题,而且有时候对于可逆矩阵有可能也不存在三角分 ...

  2. c++ Eigen库中的矩阵分析为什么使用QR分解

    学习QR分解最好的一句话是这样说的:"把质的困难转化为量的复杂,转化前是一个相对复杂的矩阵,转化后矩阵简单但是数量多于一个."真的是精髓之所在. Decomposition Met ...

  3. 视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和Eigen库

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  4. 求解矩阵方程耗时比较(直接求逆,Qr分解,LU分解)

    测试环境: C++ Egien库 代码 #include <iostream> #include <ctime>#include <Eigen/Core> #inc ...

  5. 视觉SLAM中的数学——解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解

    前言 本博客主要介绍在SLAM问题中常常出现的一些线性代数相关的知识,重点是如何采用矩阵分解的方法,求解线性方程组AX=B.主要参考了<计算机视觉--算法与应用>附录A以及Eigen库的方 ...

  6. java 矩阵分解_计算方法(三)矩阵分解1-正交分解(QR分解)

    正交分解 矩阵的正交分解又称为QR分解,是将矩阵分解为一个正交矩阵Q和一个上三角矩阵的乘积的形式. 任意实数方阵A,都能被分解为 .这里的Q为正交单位阵,即 R是一个上三角矩阵.这种分解被称为QR分解 ...

  7. 计算方法(三)矩阵分解1-正交分解(QR分解)

    为什么80%的码农都做不了架构师?>>>    正交分解 矩阵的正交分解又称为QR分解,是将矩阵分解为一个正交矩阵Q和一个上三角矩阵的乘积的形式. 任意实数方阵A,都能被分解为 .这 ...

  8. Eigen库的基本使用说明

    Eigen是基于线性代数的C ++模板库,主要用于矩阵,向量,数值求解器和相关算法.Ceres,G2O等项目均是基于Eigen. 1.支持整数.浮点数.复数,使用模板编程,可以为特殊的数据结构提供矩阵 ...

  9. 【Eigen】Eigen库基础语法

    这里是Eigen库的一些基础语法,摘自<视觉SLAM十四讲>,修改了书中代码的一些bug,部分地方添加了一些自己的理解. 头文件相关 #include <Eigen/Core> ...

最新文章

  1. 百度AI攻坚战:PaddlePaddle中国突围
  2. 一个空值_MySQL数据库表中 NULL 和空值到底有什么区别呢?
  3. java实现ad域登陆验证
  4. eclipse 打开文件目录
  5. [原创]Flex 与 Asp.Net 通过 Remoting 方式进行通讯 (三)
  6. SSM中通过okhttp3向接口发送xml格式的请求参数
  7. [云炬创业管理笔记]第6章制定创业行动测试5
  8. ​5G+AI时代的高效视频处理
  9. c语言保存文件格式如何改回来,急求如何将下列C语言程序数据存储到文件中?...
  10. kali安装docker(有效详细的教程)
  11. HTML5效果:实现树叶飘落
  12. PHP面向对象相关特性
  13. 【Elasticsearch】Elasticsearch性能调优
  14. DataTable判断列是否为空!(实用)
  15. python3.7安装pyltp出错_安装pyltp遇到的问题及解决办法
  16. COLING 2018 accepted paper
  17. Java编写五线谱上的音符_五线谱音符(五线谱1234567表示图)
  18. 知乎,挣钱?果然具有长尾效应
  19. 201771010112罗松《面向对象程序设计(java)》第六周学习总结
  20. 9 本优秀的 R 语言免费电子书

热门文章

  1. CMD命令提示符窗口中的快捷键、小技巧和常用命令
  2. 【我的第一本人生规划手册】读后感
  3. EBS_财务报表生成器(FSG)的设置
  4. nexus5x刷入kali nethunter
  5. 指令查看win10与Linux系统保存WiFi信息
  6. 计算机显卡故障与排除,显卡与显示器故障有哪些 显卡与显示器故障如何排除...
  7. 为什么要找个程序员当老公?
  8. 无界鼠标安装总流程以及安装出现的问题(win10)
  9. 牛客网练习赛15__吉姆的奇思妙想
  10. JAVA入门[20]-Spring Data JPA简单示例