本文讲述如何在VS2019中配置eigen
eigen版本:eigen-3.3.9
百度网盘地址:https://pan.baidu.com/s/1Bu5A58qV2n8doDs4NpPfJQ 提取码:cjbg
步骤:
下载eigen压缩包,并解压在你想要的位置。
1:右键单击项目名称选择属性;
2:在左侧找到:配置属性——》C/C++——》常规——》附加包含目录,找到解压缩的eigen-3.3.9文件夹位置,进行添加。点击确定,结束。
最后输入如下代码进行测试:
#include
#include
#include
using namespace std;
// 利用Eigen库,采用SVD分解的方法求解矩阵伪逆,默认误差er为0
Eigen::MatrixXd pinv_eigen_based(Eigen::MatrixXd& origin, const float er = 0) {
// 进行svd分解
Eigen::JacobiSVD
Eigen::ComputeThinU |
Eigen::ComputeThinV);
// 构建SVD分解结果
Eigen::MatrixXd U = svd_holder.matrixU();
Eigen::MatrixXd V = svd_holder.matrixV();
Eigen::MatrixXd D = svd_holder.singularValues();
// 构建S矩阵
Eigen::MatrixXd S(V.cols(), U.cols());
S.setZero();
for (unsigned int i = 0; i < D.size(); ++i) {
if (D(i, 0) > er) {
S(i, i) = 1 / D(i, 0);
}
else {
S(i, i) = 0;
}
}
return V * S * U.transpose();
}
int main() {
Eigen::MatrixXd B(7, 7);
B << 1, 2, 3, 4, 5, 6, 7,
1, 2, 3, 4, 5, 6, 7,
1, 2, 3, 4, 5, 6, 7,
1, 2, 3, 4, 5, 6, 7,
1, 2, 3, 4, 5, 6, 7,
1, 2, 3, 4, 5, 6, 7,
1, 2, 3, 4, 5, 6, 7;
// 打印矩阵B的伪逆矩阵
cout << B << endl;
cout << "矩阵B的伪逆为:" << endl;
cout << pinv_eigen_based(B) << endl;
getchar();
}