邓辉

个人站

欢迎来到我的个人站~


Eigen - Overview

#写在最前面的废话

Eigen这个库从接触开始就知道他很厉害,但每次都是用到的时候百度以下,不用的时候就放下了(不要问我为什么不用谷歌,因为百度已经能够满足我这个层次的完全需求-哈哈哈)。 一直闹不明白为什么别人这么🐂皮,而我为什么这么菜。不想从新投胎,也就忍忍算啦。每次都以完美主义者自居,完美的说服了自己从入门到放弃。 现在开始从头撸Eigen,如果发现我长时间不更新。那么就说明我放弃了,不要催更啦。

#Getting started Eigen是一个非常通用的数学函数库,支持各自矩阵运算。在搞了接近四年3D视觉,总结的一个经验就是,原理性的公式可以自己去推去写,但在真正的做事情的时候还是借用外部库吧。 有很多比你厉害的人已经帮你做了很多事情,相信他们并运用他们就行啦。

#Matrices and vectors

实例: ```C++ Size set at run time:

#include #include <Eigen/Dense> using namespace Eigen; using namespace std; int main() { MatrixXd m = MatrixXd::Random(3,3); m = (m + MatrixXd::Constant(3,3,1.2)) * 50; cout << "m =" << endl << m << endl; VectorXd v(3); v << 1, 2, 3; cout << "m * v =" << endl << m * v << endl; }

注释:示例中新建了一个3*3的动态矩阵,赋予(-1,1)之间的随机值。这个示例主要关注的点如下:

  • 头文件<Eigen/Dense> 这个头文件里面定义了各种矩阵的数据类型。
  • MatrixXd 这个矩阵是动态矩阵,可以自定在函数中定义矩阵的大小。
  • MatrixXd::Constant(3,3,1.2) 矩阵的一种初始化方式,表示是个3*3且元素值都为1.2的矩阵。
  • VectorXd 这是个动态向量,存储的数据类型是double。
  • 上述的两个变量都是动态的,因此矩阵的大小在函数运行的时候设定。

Size set at compile time:

#include #include <Eigen/Dense> using namespace Eigen; using namespace std; int main() { Matrix3d m = Matrix3d::Random(); m = (m + Matrix3d::Constant(1.2)) * 50; cout << "m =" << endl << m << endl; Vector3d v(1,2,3);

cout « “m * v =” « endl « m * v « endl; }

与上个例子相似,唯一的区别是这次用的是固定大小的矩阵和向量。因此大小在编译期间就设置好了。


转载请注明原地址,邓辉的博客:https://github.com/my-lord/mylord.github.io 谢谢!


#请各位大佬多多打赏


打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦