什么是Eigen
Eigen 是C++语言里的一个开源模版库,支持线性代数运算,矩阵和矢量运算,数值分析及其相关的算法。
Eigen适用范围广,支持包括固定大小、任意大小的所有矩阵操作,甚至是稀疏矩阵;支持所有标准的数值类型,并且可以扩展为自定义的数值类型;支持多种矩阵分解及其几何特征的求解;它不支持的模块生态系统提供了许多专门的功能,如非线性优化,矩阵功能,多项式解算器,快速傅立叶变换等。
怎么安装Eigen(Windows+Visual Studio)
- 下载Eigen
- 解压,放到合适的目录下
- 项目中添加该目录
(占坑,后面会补齐Liunx环境下的安装方法)
Eigen库的模块及其头文件
为了应对不同的需求,Eigen库被分为多个功能模块,每个模块都有自己相对应的头文件,以供调用。 其中,Dense模块整合了绝大部分的模块,而Eigen模块更是整合了所有模块(也就是整个Eigen库)。文章来源:https://www.toymoban.com/news/detail-442986.html
模板 | 头文件 | 功能 |
---|---|---|
Core | #include <Eigen/Core> | Matrix和Array类,基础的线性代数运算和数组操作 |
Geometry | #include<Eigen/Geometry> | 旋转﹑平移、缩放、2D和3D的各种变换 |
LU | #include<Eigen/LU> | 求逆,行列式,LU分解 |
Cholesky | #include<Eigen/Cholesky> | LLT和LDLTCholesky分解 |
Householder | #include<Eigen/Householder> | 豪斯霍尔德变换,用于线性代数运算 |
SVD | #include<Eigen/SVD> | SVD分解 |
QR | #include<Eigen/QR> | QR分解 |
Eigenvalues | #include<Eigen/Eigenvalues> | 特征值,特征向量分解 |
Sparse | #include<Eigen/Sparse> | 稀疏矩阵的存储和一些基本的线性运算 |
Dense | #include<Eigen/Dense> | 包含了Core / Geometrg/ LU / Cholesky / SVD/QR/ Eigenoalues模块 |
Eigen | #include<Eigen/Eigen> | 包括Dense和Sparse(整个Eigen库) |
Eigen的使用
此处列举几种构建2*2矩阵的方法文章来源地址https://www.toymoban.com/news/detail-442986.html
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main()
{
MatrixXd m1(2, 2);//MatrixXd表示是任意尺寸的矩阵i*j, m(2,2)代表一个2x2的方块矩阵
m1 << 5, 7, 2, 13;
cout << m1 << endl;//输出矩阵m1
MatrixXd m2 = MatrixXd::Random(2, 2); //定义2*2的随机矩阵m,各元素取值范围是[-1,1]
cout << m2 << endl;//输出矩阵m2
Matrix2d m3; //"Matrix2d"直接定义了一个2-by-2的方块矩阵
m3(0, 0) = 1;
m3(1, 0) = 2;
m3(0, 1) = 3;
m3(1, 1) = 4;
cout << m3 << endl;//输出矩阵m3
}
}
到了这里,关于【Eigen】从入门到放弃(一):安装和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!