Eigen - Overview

---
layout: post
title: "Eigen - Overview"
date: 2019-5-27
description: "Eigen说明文档(一)"
tag: Eigen
---   

#写在最前面的废话

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

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

#Matrices and vectors

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

#include
#include
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)之间的随机值。这个示例主要关注的点如下:
> * 头文件 这个头文件里面定义了各种矩阵的数据类型。
> * MatrixXd  这个矩阵是动态矩阵,可以自定在函数中定义矩阵的大小。
> * MatrixXd::Constant(3,3,1.2) 矩阵的一种初始化方式,表示是个3*3且元素值都为1.2的矩阵。
> * VectorXd 这是个动态向量,存储的数据类型是double。
> * 上述的两个变量都是动态的,因此矩阵的大小在函数运行的时候设定。

Size set at compile time:

#include
#include
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](https://github.com/my-lord/mylord.github.io) 谢谢!*

-------------------------------------------

#请各位大佬多多打赏


-------------------------------------------

你可能感兴趣的:(Eigen)