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#include #include 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