如何使用Eigen来表示矩阵、向量,随后引申到旋转矩阵与变换矩阵的计算
Eigen是一个C++开源线性代数库。它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。g2o、Sophus也都使用Eigen来进行矩阵计算。
安装Eigen
sudo apt-get install libeigen3-dev
查找Eigen在哪里
sudo updatedb
locate eigen3
- Eigen有一个神奇的地方:它是一个纯用头文件搭建起来的库。
- 这意味着你只能找到它的头文件,而没有.so或.a这样的二进制文件。我们在使用的时候,只需要引入Eigen的头文件即可,不需要链接它的库(因为它没有库文件)。
练习使用Eigen
#include<iostream>
#include<ctime>
using namespace std;
//Eigen
#include<Eigen/Core>
//稠密矩阵的代数运算(逆,特征值等)
#include<Eigen/Dense>
#define MATRIX_SIZE 50
/*******************
*演示Eigen基本类型使用
********************/
int main( int argc, char** argv)
{
//Eigen以矩阵为基本数据单元。它的前三个参数为:数据类型、行、列(请记住)
//声明一个2*3的float矩阵
Eigen::Matrix<float, 2, 3> matrix_23;
//同时,Eigen通过typedef提供了许多内置类型,不过底层仍是Eigen::Matrix
//例如Vector3d实则上是Eigen::Matrix<double, 3, 1>
Eigen::Vector3d v_3d;
//还有Matrix3d实质上是Eigen::Matrix<double, 3, 3>
Eigen::Matrix3d matrix_33 = Eigen::Matrix3d::Zero();//初始化为零
//如果不确定矩阵大小,可以使用动态大小的矩阵
Eigen::Matrix<double, Eigen