Eigen使用入门

1.模块和头文件

Core #include,包含Matrix和Array类,基础的线性代数运算和数组操作。

Geometry #include,包含旋转,平移,缩放,2维和3维的各种变换。

LU #include,包含求逆,行列式,LU分解。

Cholesky #include,包含LLT和LDLT Cholesky分解。

SVD `#include,包含SVD分解。

QR `#include,包含QR分解。

Eigenvalues #include,包含特征值,特征向量分解。

Sparse #include,包含稀疏矩阵的存储和运算。

Dense #include,包含了Core/Geometry/LU/Cholesky/SVD/QR/Eigenvalues模块。

Eigen #include,包含Dense和Sparse。

链接:https://www.jianshu.com/p/931dff3b1b21
2. Matrix类

所有矩阵和向量都是Matrix模板类的对象,Matrix类有6个模板参数,主要使用前三个,剩下的使用默认值
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190710205827361.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjI5Njc4MA==,size_16,color_FFFFFF,t_70)

默认构造时,指定大小的矩阵,只分配相应大小的空间,不进行初始化。动态大小的矩阵,则未分配空间。
[]操作符可以用于向量元素的获取,但不能用于matrix。
matrix的大小可以通过rows(), cols(), size()获取,resize()可以重新调整矩阵大小。

下面编写一个例子:
用的是ubantu里的Kdevelop,新建工程后,需要加入头文件。
即输入#include
输入后可能会显示:include file"Eigen/Core"not found
你点击add custom include path
弹出窗口
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190710210414468.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9
nLmNzZG4ubmV0L3dlaXhpbl80MjI5Njc4MA==,size_16,color_FFFFFF,t_70)
添加你的Eigen路径即可。
好的,接下来我们来编写例子:
Eigen使用入门_第1张图片
可是运行是又发现找不到该文件:实际上

#include
改成
#include 就可以。
因为在include下没有EIgen,只有eigen3.
Eigen使用入门_第2张图片
矩阵与向量的运算

Eigen不支持类型自动转化,因此矩阵元素类型必须相同。你也可以显式转化
支持+, -, +=, -=, *, /, *=, /=基础四则运算。
转置和共轭

Eigen使用入门_第3张图片
我在输入时经常出现错误/357,把那一句话用英文重新写一遍就好。
而且我在使用KDevelop时往往会出现提示的错误,并不是错误,这一点确实很恶心。
矩阵的运算必须保证矩阵元素类型一致,而且纬度正确。
Eigen使用入门_第4张图片

块操作
块是matrix或array中的矩形子块。
.block(i, j, p, q) //起点(i, j),块大小(p, q),构建一个动态尺寸的block
.block(i, j) // 构建一个固定尺寸的block
matrix.row(i): 矩阵第i行
matrix.col(j): 矩阵第j列
Eigen使用入门_第5张图片
矩阵初始化
逗号初始化:为矩阵元素赋值,顺序是从左到右,从上到下,数目必须匹配。
Eigen使用入门_第6张图片
特殊矩阵

零阵:类静态成员函数Zero()

常量矩阵:Constant(rows, cols, value)

随机矩阵:Random()

单位矩阵:Identity()

LinSpaced(size, low, high):构建从low到high等间距的size长度的序列,适用于vector和一维数组。
功能函数

`setZero()
setIdentity()

链接:https://www.jianshu.com/p/931dff3b1b21
特征值及解方程

Eigen使用入门_第7张图片
运行时,大家取运行工程目录下build文件夹里与工程名相同的执行文件,我的工程文件名为eigen_learn,,大家在build文件夹下打开终端 ,输入 ./eigen_learn即可。

你可能感兴趣的:(Linux,eigen)