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 <iostream>
#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 <iostream>
#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;
}

與上個例子相似,唯一的區別是這次用的是固定大小的矩陣和向量。因此大小在編譯期間就設置好了。

 

<br>
*轉載請註明原地址,鄧輝的博客:[https://github.com/my-lord/mylord.github.io](https://github.com/my-lord/mylord.github.io) 謝謝!*

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

#請各位大佬多多打賞


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章