本文主要讲解利用特征库计算矩阵的特征值及特征向量并与Matlab计算结果进行比较。
<强> c++特征库代码强>
# include & lt; iostream> # include & lt;特征/Dense> # include & lt;特征/Eigenvalues> 使用名称空间特征; 使用名称空间性病; 空白Eig () { Matrix3d; & lt; & lt;1,2,3,4,5,6,7,8,9; cout & lt; & lt;“这是一个3 x3的矩阵,:“& lt; & lt;endl & lt; & lt;& lt; & lt;endl & lt; & lt;endl; EigenSolveres(一个); Matrix3d D=es.pseudoEigenvalueMatrix (); Matrix3d V=es.pseudoEigenvectors (); cout & lt; & lt;“pseudo-eigenvalue矩阵D:“& lt; & lt;endl & lt; & lt;D & lt; & lt;endl; cout & lt; & lt;“pseudo-eigenvector矩阵V:“& lt; & lt;endl & lt; & lt;V & lt; & lt;endl; cout & lt; & lt;”最后,V * D * ^ (1)=" & lt; & lt;endl & lt; & lt;V * D * V.inverse () & lt; & lt;endl; } int main () { Eig (); }
计算结果:
最大最小特征值及其索引位置
//maxCoeff//minCoeff int col_index row_index; cout & lt; & lt;D.maxCoeff(及row_index, col_index) & lt; & lt;endl; cout & lt; & lt;row_index & lt; & lt;”“& lt; & lt;col_index & lt; & lt;endl;
Matlab代码
清除所有 clc=(1 2 3 4 5 6;7 8 9) [V D]=eig (A)
Matlab计算结果
<强>使用排序()函数对特征值排序强>
主成份分析以及许多应用时候,需要对特征值大小排列。
一个=魔法(6); [V D]=eig (A) [D_S,指数]=排序(诊断接头(D),“下降”) V_S=V(:,指数)
结果
V=0.4082 -0.2887 0.4082 0.1507 0.4714 -0.4769 0.4082 0.5774 0.4082 0.4110 0.4714 -0.4937 0.4082 -0.2887 0.4082 -0.2602 -0.2357 0.0864 0.4082 0.2887 -0.4082 0.4279 -0.4714 0.1435 0.4082 -0.5774 -0.4082 -0.7465 -0.4714 0.0338 0.4082 0.2887 -0.4082 0.0171 0.2357 0.7068 D=111.0000 0 0 0 0 0 27.0000 0 0 0 0 0 -27.0000 0 0 0 0 0 9.7980 0 0 0 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.2887 0.1507 0.4714 -0.4769 0.4082 0.4082 0.5774 0.4110 0.4714 -0.4937 0.4082 0.4082 -0.2887 -0.2602 -0.2357 0.0864 0.4082 0.4082 0.2887 0.4279 -0.4714 0.1435 -0.4082 0.4082 -0.5774 -0.7465 -0.4714 0.0338 -0.4082 0.4082 0.2887 0.0171 0.2357 0.7068 -0.4082
<强>结语强>
本人是在实验中利用特征库求取最小特征值对应特征向量做PCA分析时使用,曾经再不知道有特征库的情况下自己写过矩阵相关运算的模板类,现在接触到特征库,就把困扰过自己的问题今天做一个小小总结。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。