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

#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结果

注意:matlab eig与Eigen库计算结果可能不一致,某些列符号相反,我不知道这会不会对结果其他计算结果产生影响,正在试验---2020.8.16

参考链接:

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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值