一、Eigen介绍
- Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。它的License是MPL2。它支持多平台。
- Eigen采用源码的方式提供给用户使用,在使用时只需要包含Eigen的头文件即可进行使用。之所以采用这种方式,是因为Eigen采用模板方式实现,由于模板函数不支持分离编译,所以只能提供源码而不是动态库的方式供用户使用。
二、官网下载地址
官网下载地址为: http://eigen.tuxfamily.org/index.php?title=Main_Page#Download
图1为官网首页
图1 官网首页
目录文件如下:eigen-3.3.7是所有eigen文件的根目录,如图2
图2 eigen文件的根目录
三、在VS2017的项目中包含eigen-3.3.7方法
方法如下:
新建一个项目eigen_test,在项目——属性中的C/C++——常规——附加包含目录添加eigen-3.3.7所在的路径,D:\vs_test\eigen_test\eigen-3.3.7。


结果如下图所示:
四、使用Eigen
包含头文件、命名空间
#include <iostream>
#include <Eigen/Core> // 包含头文件
#include <unsupported/Eigen/MatrixFunctions>
using namespace Eigen; //命名空间
using namespace std;
template<typename DerivedA, typename DerivedB> // 需要头文件 #include <unsupported/Eigen/MatrixFunctions>
void pinv2(const MatrixBase<DerivedA>& A, MatrixBase<DerivedB>& B) {
MatrixXd A_temp(2, 2);
A_temp = A.transpose()*A;
B = (A_temp.inverse())*A.transpose();
}
int main()
{
MatrixXd meta(5, 2);
meta << 1, 0,
0.88, 0,
0, 1,
0, 1.3214,
0, 0.6607;
MatrixXd projection(2, 5);
pinv2(meta, projection); // 通过meta,求出projection
cout << "projection=" << projection << endl;
}
执行结果如下:
版权声明:本文为yaodaoji原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。