Eigen
1.Eigen数学库介绍
说明:本教程主要是对eigen官网文档做了一个简要的翻译,参考了eigen官网以及一些博主的技术贴,在此表示感谢。
Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开源库,从3.1.1版本开始遵从MPL2许可。
2.Eigen安装及使用
2.1 安装
eigen3在linux下的安装可以直接用命令安装:
sudo apt-get install libeigen3-dev
也可以参考下面链接:
ubuntu16.04下eigen安装
2.2 CMakeLists.txt编写
eigen库采用模板编程技术,仅由一些头文件组成,运行速度快。用cmake管理项目的时候,只需要在CMakeLists.txt里面头文件的路径即可:
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
2.3 版本查看
终端输入命令:
tac /usr/include/eigen3/Eigen/src/Core/util/Macros.h # tac表示从文本的后面往前输出,

可以看到我安装的版本是3.2.92.
2.4 Eigen每个头文件的作用

3.Eigen官方教程
eigen官网链接 eigen.tuxfamily.org
文档 https://eigen.tuxfamily.org/dox/
4.Eigen使用基础
4.1 Eigen入门-hello Eigen
先来一个最简单的eigen程序体验下:
#include <iostream>
#include <Eigen/Dense> // Eigen头文件,<Eigen/Dense>包含Eigen库里面所有的函数和类
int main()
{
Eigen::MatrixXd m(2,2); // MatrixXd 表示的是动态数组,初始化的时候指定数组的行数和列数
m(0,0) = 3; //m(i,j) 表示第i行第j列的值,这里对数组进行初始化
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);
std::cout << m << std::endl; // eigen重载了<<运算符,可以直接输出eigen矩阵的值
}
输出
3 -1
2.5 1.5
4.2 Matrices and vectors
//
// Created by fuhong on 20-7-12.
//
#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main() {
MatrixXd m = MatrixXd::Random(3, 3); //初始化动态矩阵m,使用Random函数,初始化的值在[-1,1]区间内,矩阵大小3X3
m = (m + MatrixXd::Constant(3, 3, 1.2)) * 50; // MatrixXd::Constant(3, 3, 1.2)初始化3X3矩阵,矩阵里面的数值为常量,全部为1.2
// Eigen重载了+ 运算符,两个矩阵有相同的行数和列数即可相加,对应位置上的值相加
cout << "m =" << endl << m << endl;
VectorXd v(3);
v << 1, 2, 3; //逗号初始化,英文:comma-initializer,Eigen未提供c++11 的{}初始化方式
cout << "m * v =" << endl << m * v << endl;
}
m =
94.0188 89.844 43.5223
49.4383 101.165 86.823
88.3099 29.7551 37.7775
m * v =
404.274
512.237
261.153
。。。。
剩下的看懂了再写,免得误导大家!
本文介绍了Eigen库,一个C++的高性能线性代数库,涉及安装方法(apt-get与CMake),使用示例(矩阵和向量操作),以及头文件作用。教程包括HelloEigen示例和矩阵/向量计算。
1万+

被折叠的 条评论
为什么被折叠?



