C++ 矩阵运算库Eigen3 使用教程

一、引言

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 ;

 }

三、参考资料

猜你喜欢

转载自blog.csdn.net/yph001/article/details/81743630