一、矩阵操作
函数实例 | 函数说明 |
---|---|
solver.pseudoEigenvalueMatrix() | 获取矩阵A的特征值矩阵,是一个特征值组成对角阵,除了对角线其余都是0 |
solver.pseudoEigenvectors() | 获取特征向量的矩阵 |
solver.eigenvectors() | 获取特征向量的矩阵 |
举例:
MatrixXt& cov
Eigen::EigenSolver<MatrixXt> solver(cov);
MatrixXt D = solver.pseudoEigenvalueMatrix(); // 获取矩阵A的特征值矩阵,是一个特征值组成对角阵,除了对角线其余都是0
MatrixXt V = solver.pseudoEigenvectors(); // 获取特征向量的矩阵
cov_out = V * D * V.inverse();// 理论上 cov_out 和 cov 是一样的
参考链接:
[1] Eigen中矩阵的特征值求解函数eigenvectors()和pseudoEigenvectors()的区别 https://blog.csdn.net/qq_42679415/article/details/101939806
二、块操作
函数实例 | 函数说明 |
---|---|
matrix.block(i,j,p,q) | 提取块起始于(i,j),大小为(p,q) |
matrix.block<p,q>(i,j) | 提取块起始于(i,j),大小为(p,q) |
eigen的block操作有两种模板。
1.matrix.block(i,j,p,q)
2.matrix<p,q>(i,j)
p,q表示block的大小。
i,j表示从矩阵中的第几个元素开始向右向下开始算起
参考链接:
[1] Eigen使用记录 https://blog.csdn.net/ThorKing01/article/details/97636454
[2] Eigen子矩阵操作(block) https://blog.csdn.net/qq_27251141/article/details/90442072
三、Eigen 中不同矩阵类型之间的转换,比如 float 转换为 double
三、参考链接
EIGEN库使用指南(转载) https://www.freesion.com/article/9849917188/