Eigen 求解矩阵特征值特征向量(matlab [B,D] = eig(C))
程序员文章站
2022-07-15 10:55:04
...
#include <Eigen/Dense>
#include <iostream>
using namespace Eigen;
using namespace std;
int main(){
MatrixXd K(2,2);
K << 4, 5, 8, 5;
cout << "K" << endl << K << endl;
EigenSolver<MatrixXd> es(K);
MatrixXcd evecs = es.eigenvectors();//获取矩阵特征向量2*2,这里定义的MatrixXcd必须有c,表示获得的是complex复数矩阵
MatrixXd B;//注意这里定义的MatrixXd里没有c
B = evecs.real();//得到对应特征向量
cout << "evecs" << endl << evecs << endl;
cout << "B" << endl << B << endl; //B
MatrixXcd evals = es.eigenvalues();//获取矩阵特征值 2*1
MatrixXd D_temp,D;//注意这里定义的MatrixXd里没有c
D_temp = evals.real();//获取特征值实数部分
D = D_temp.asDiagonal();
cout << "evals" << endl << evals << endl;
cout << "D_temp" << endl << D_temp << endl; //D
cout << "D" << endl << D << endl; //D
MatrixXf::Index evalsMax;
B.rowwise().sum().maxCoeff(&evalsMax);//得到最大特征值的位置
cout << "evalsMax" << endl << evalsMax << endl;
}
结果
matlab结果
参考链接: