Eigen初步1:初步體驗Eigen庫


  

  前言:

  Eigen 是一個線性算術的C++模板庫,包括:vectors, matrices, 開源以及相關算法。功能強大、快速、優雅以及支持多平台,可以使用該庫來方便處理一些矩陣的操作,達到類似matlab那樣的快捷。現在已經發展到Eigen3了,目前最新版本為Eigen 3.1.2。

 

  Eigen使用預備工作:

  首先到Eigen官網上下載Eigen源碼包,下載后解壓完直接放到自己平時軟件所在的目錄下,不需要安裝。Eigen下載地址為:http://eigen.tuxfamily.org/index.php?title=Main_Page

  然后當自己需要使用到Eigen時,在相應的集成開發環境下添加Eigen所在的頭文件目錄即可,比如我在Qt下開發,使用的是QtCreator,則需要在工程文件*.pro下添加如下代碼:

INCLUDEPATH += C:\Qt\eigen 

  其它的開發環境比如VS可以參考本文后面給出的參考資料(第一個)。

 

  關於Eigen的一些基本特征:

  Eigen中的矩陣類型一般都是用類似MatrixXXX來表示,可以根據該名字來判斷其數據類型,比如說’d’代表double並不是用來表示整數的,;‘f’代表float; ‘i’代表整數;‘c’代表complex,即復數;’d’表示dynamic,即表示矩陣中有些維數是不確定的,動態的……舉例子比如說:Matrix2cd,表示的是2*2維的,其每個元素都是復數,復數的實部和虛部都為double類型。

  Eigen中需要非常注意其數據類型,比如2個向量相乘如果得到一個矩陣,則向量中元素的類型和矩陣中元素的類型必須都相同,否則會出現錯誤。

 

  下面舉個例子來簡單使用下Eigen庫,本例子非常簡單,主要是對Eigen的使用有個感性認識。實驗代碼如下:

#include <iostream>
#include <vector>
#include <Eigen/Eigen>

using namespace Eigen;
using namespace std;

int main()
{
    Eigen::Vector2d v1, v2;     //Eigen中的變量
    v1 << 5, 6;   //默認的向量為列向量
    cout  << "v1 = " << endl << v1 << endl;
    v2 << 4, 5 ;
    Matrix2d result = v1*v2.transpose();
    cout << "result: " << endl << result << endl;
}

 

  實驗結果如下:

  

 

  參考資料:

     C++矩陣處理工具——Eigen

     http://eigen.tuxfamily.org/index.php?title=Main_Page

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM