eigen是乙個c++開源線性代數庫。它提供了快速的有關矩陣的線性代數運算,還包括解方程等功能。g2o、sophus也都使用eigen來進行矩陣計算。
安裝eigen
sudo apt-get install libeigen3-dev
查詢eigen在**
sudo updatedb
locate eigen3
練習使用eigen#include
#include
using
namespace std;
//eigen
#include
//稠密矩陣的代數運算(逆,特徵值等)
#include
#define matrix_size 50
/*******************
*演示eigen基本型別使用
********************/
intmain
(int argc,
char
** ar**)
要編譯它,還需要在cmakelists.txt裡指定eigen的頭檔案目錄:
#新增標頭檔案
include_directories
("/usr/include/eigen3"
)
重複提醒大家一下,因為eigen庫只有標頭檔案,我們不需要再用target_link_libraries語句將程式鏈結到庫上。不過大多數其他庫需要用到鏈結命令。
接下來希望大家去跑一跑這個示例。
eigen提供的矩陣,幾乎所有的資料都當作矩陣來處理。但是,為了實現更好的效率,在eigen中你需要指定矩陣的大小和型別。對於在編譯時期就知道大小的矩陣,處理起來會比動態變化大小的矩陣更快一點。因此,像旋轉矩陣、變換矩陣這樣的資料,完全可在編譯時期確定它們的大小和資料型別。
大家使用eigen的時候,希望你像使用float、double那樣的內建資料型別使用eigen的矩陣。
eigen矩陣不支援自動型別提公升,這和c++內建資料型別有較大差異。在c++程式中,我們可以把乙個float資料和double資料相加、相乘,編譯器會自動把資料型別轉換為最合適的那種。而在eigen中,出於效能的考慮,必須顯示地對矩陣型別進行轉換(示例裡有錯誤示範)。而如果忘了,則會報錯:「you mixed different numeric types …"
同理,你需要保證矩陣維數的正確性。報錯型別:「you mixed matrices of different sizes」
大家可以去學習更多的eigen知識
最後一段比較了求逆與求qr分解的執行效率,朋友可以去對比一下差異。
廣義上從運動來解釋特徵值就是速度,特徵向量就是運動的方向。
矩陣上來解釋特徵值就是對特徵向量進行伸縮或者旋轉的度量(實數是伸縮,虛數是旋轉,複數是伸縮加旋轉),特徵向量是在矩陣變換下只進行「規則」變換的向量,規則也就是特徵值。
qr分解也就是正交三角分解。
安裝eigen macOS 安裝 Eigen
brew install eigen 安裝完成後,eigen資料夾位於 usr local cellar eigen 3.3.7 include eigen3資料夾內,並非系統資料夾,因此還需下面一步 brew link overwrite eigen 執行後,會在 系統資料夾 usr local ...
安裝與配置 Eigen3(macOS)
eigen 官方 按照官網提示,git cloneeigen。git clone安裝 eigen3 需要 cmake,cmake 的安裝可以參考我的另一篇文章 安裝與配置 cmake macos 然後,按照常規的 cmake 的方式安裝 eigen3。cd eigen mkdir build cd ...
Eigen使用入門
eigen是可以用來進行線性代數 矩陣 向量操作等運算的c 庫,它裡面包含了很多演算法。它的license是mpl2。它支援多平台。eigen採用原始碼的方式提供給使用者使用,在使用時只需要包含eigen的標頭檔案即可進行使用。之所以採用這種方式,是因為eigen採用模板方式實現,由於模板函式不支援...