首页 > 编程知识 正文

特征值为0的特征向量,特征值与特征向量源码

时间:2023-05-04 05:37:48 阅读:39265 作者:4797

本文主要阐述用Eigen库计算矩阵特征值和特征向量,并与Matlab计算结果进行比较。

C Eigen库代码

#包含

#包含

#包含

using namespace Eigen;

用户命名空间STD;

void Eig () )

{

矩阵3d a;

a1、2、3、4、5、6、7、8、9;

cout ' here is a 3x 3矩阵,A:' endl A endl endl;

EigenSolveres(a;

matrix 3d=es.pseudoeigenvaluematrix (;

矩阵3d v=es.pseudo eigenvectors (;

cout ' the pseudo-eigenvaluematrixdis : ' endldendl;

cout ' the仿真- eigenvectormatrixvis : ' endlvendl;

cout 'Finally,v*d*v^(-1 )=' endl V * D * V.inverse ) ) endl;

}

int main () )

{

Eig (;

}

计算结果:

最大最小特征值及其索引位置

//maxCoeff

//minCoeff

int col_index,row_index;

coutd.maxcoeff(row_index,col_index ) endl;

cout row_index ' ' col_index endl;

匹配代码

清除全部

clc

A=[1 2 3; 4 ) 6; 7(9) )。

[V,d]=EIG(a ) ) ) )

Matlab的计算结果

sort ) )函数对特征值进行排序

主成分分析和很多应用时,需要排列特征值的大小。

a=幻方图(6;

[V,d]=EIG(a ) ) ) )

[D_S,index ]=sort (诊断(d ),' descend ' )

v_s=v(:索引) )。

结果

V=

0.4082-0.28870.40820.15070.4714-0.4769

0.40820.57740.40820.41100.4714-0.4937

0.4082-0.28870.4082-0.2602-0.23570.0864

0.40820.2887-0.40820.4279-0.47140.1435

0.4082-0.5774-0.4082-0.7465-0.4714.0338

0.40820.2887-0.40820.01710.23570.7068

D=

111.0000 0 0 0 0 0

0 27.0000 0 0 0 0

0 0 -27.0000 0 0 0

0 0 0 9.7980 0 0

0 0 0 0 -0.0000 0

0 0 0 0 0 -9.7980

D_S=

111.0000

27.0000

9.7980

-0.0000

-9.7980

-27.0000

V_S=

0.4082-0.28870.15070.4714-0.47690.4082

0.40820.57740.4110.4714-0.49370.4082

0.4082-0.2887-0.2602-0.23570.08640.4082

0.40820.28870.4279-0.47140.1435-0.4082

0.4082-0.5774-0.7465-0.47140.0338-0.4082

0.40820.28870.01710.23570.7068-0.4082

结语

我在实验中利用Eigen库求出最小特征值对应的特征向量进行PCA分析时使用。 我曾经在不知道有Eigen库的情况下自己写了矩阵相关运算的模板类,现在我来接触一下Eigen库,把自己遇到的困难总结一下。

希望以上是正文的全部内容,对大家的学习有帮助。 另外,我希望你支持很多编剧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。