一、引言
Eigen是線性代數的C ++模板庫,提供矩陣,向量,數值求解器和相關算法,並具有較高的運算速度,經常採用。
二、內置函數使用說明
1) 使用舉例
- main.cpp
#include <iostream>
#include "Eigen/Dense"
using namespace std;
int main()
{
Eigen::Matrix3d F;
F <<
1, 0, 0,
0, -1, 0,
0, 0, 1;
Eigen::Vector3d m;
m(0) = 3;
m(1) = 2.5;
m(2) = -1;
Eigen::Vector3d res = F*m;
cout<<res<<endl;
return 1;
}
- 編譯所需CMakelist
# cmake version
cmake_minimum_required(VERSION 2.8)
# project name
project( eigen_test )
# eigen
SET(EIGEN3_INCLUDE_DIR /usr/include/eigen3)
INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR})
# Generate executable file
add_executable( Demo main.cpp )
2) 利用小矩陣構造大矩陣
#include <iostream>
#include "Eigen/Dense"
using namespace std;
int main()
{
Eigen::Matrix4d T;
Eigen::Matrix3d F;
F <<
0.51, 0.2, 0.57,
0.86, -1, -0.67,
0.5, 0.3, 0.83;
T.topLeftCorner(3,3) = F;
Eigen::Vector3d vec(5,8,9);
T.col(3).head(3) << vec(0), vec(1), vec(2);
T.row(3) << 0,0,0,1;
cout << "T <<" << endl << T << endl ;
}