1模块和头文件说明
根据使用需求选择对应的头文件模块,下面也有各个主要模块使用说明。
2 Core说明
概述:线性代数中矩阵、向量、数组的包含头文件,其中向量对象用一列的矩阵来表示,行向量用一行的矩阵来表示
Matrix类声明:
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
class Eigen::Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >
_Scalar:表示所有支持的变量类型:如float,double,int等
_Rows :矩阵的行数或者设置为动态
_Cols :矩阵的列数或者设置为动态
模板参数
_Options任一的组合RowMajor或ColMajor,和任一的自动校准或DontAlign。前者控制存储顺序,默认为列大。后者控制对齐,这是矢量化所必需的。它默认为对齐矩阵,但固定大小不是数据包大小的倍数。
_MaxRows 最大行数。默认为_Rows(note)。
_MaxCols 最大列数。默认为_Cols(note)。
Eigen提供了许多类型定义,涵盖了通常的情况。这里有些例子:
Matrix2d是2x2的双精度方阵(Matrix<double, 2, 2>)
Vector4f是4个浮点数(Matrix<float, 4, 1>)的向量
RowVector3i是3个整数(Matrix<int, 1, 3>)的行向量
MatrixXf是浮点数(Matrix<float, Dynamic, Dynamic>)的动态尺寸矩阵
VectorXf是浮点数(Matrix<float, Dynamic, 1>)的动态大小矢量
Matrix2Xf是浮点数(Matrix<float, 2, Dynamic>)的部分固定大小(动态大小)矩阵
MatrixX3d是double(Matrix<double, Dynamic, 3>)的部分动态尺寸(固定尺寸)矩阵
矩阵和向量的使用示例
// Eigen.cpp : 线性代数示例
//
#include "pch.h"
#include <iostream>
#include "eigen3/Eigen/Dense"
using namespace Eigen;
using namespace std;
int main()
{
//矩阵的使用
Matrix<int,2,2> m1;
m1(0, 0) = 1;
m1(0, 1) = 2;
m1(1, 0) = 3;
m1(1, 1) = 4;
cout << m1 << endl;
//动态矩阵定义
MatrixXd m2(2,