欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}

 结果

Eigen 求解矩阵特征值特征向量(matlab [B,D] = eig(C))

 

matlab结果

Eigen 求解矩阵特征值特征向量(matlab [B,D] = eig(C))

 

参考链接:

Eigen库求取最大特征值和特征向量