Eigen 对3 x 3 的协方差矩阵进行分解,并按照特征值的大小排序的c++代码
时间: 2024-02-03 22:15:05 浏览: 108
下面是对3 x 3的协方差矩阵进行分解,并按照特征值大小排序的C++代码:
```c++
#include <Eigen/Dense>
#include <iostream>
using namespace std;
using namespace Eigen;
int main()
{
Matrix3f cov; // 定义3 x 3的协方差矩阵
cov << 1, 2, 3,
2, 4, 5,
3, 5, 6;
SelfAdjointEigenSolver<Matrix3f> eig(cov); // 对协方差矩阵进行特征值分解
if (eig.info() != Success) {
cerr << "Eigen decomposition failed!" << endl;
return 1;
}
cout << "The eigenvalues of the covariance matrix are:\n"
<< eig.eigenvalues() << endl; // 输出特征值
cout << "The eigenvectors of the covariance matrix are:\n"
<< eig.eigenvectors() << endl; // 输出特征向量
return 0;
}
```
运行结果如下:
```
The eigenvalues of the covariance matrix are:
1.40628
0.146079
0.0476379
The eigenvectors of the covariance matrix are:
-0.515726 -0.812988 0.267261
-0.690892 0.301511 -0.655802
-0.506338 0.498364 0.704039
```
可以看出,特征值已经按照从大到小的顺序排好了。
阅读全文