1
我想獲得一個協方差矩陣的最小特徵向量:訪問特徵值
Eigen::Matrix3d covariance_matrix; //has to be Matrix3d
double minEigenValue = 0;
int minEigenVectorIndex = 0;
//compute covariance matrix
Eigen::EigenSolver<Eigen::Matrix3d > solver(covariance_matrix);
Eigen::Matrix eigenvalues = solver.eigenvalues();
// Eigen::Matrix3d eigenvalues = solver.eigenvalues(); results in an error
for(int i = 0; i < 3;i++)
{
//How do I access the eigenvalues? This fails. eigenvalues[0][i] also fails
if(eigenvalues(0,i) > minEigenValue)
{
minEigenValue = eigenvalues(0,i);
minEigenVectorIndex = i;
}
}
// somehow get pair of vector[0], vector[1], vector[2]:
//solver.eigenvectors().col(minEigenVectorIndex);
我已經通過文件讀了不少,卻找不到一個明顯的例子/解釋 如何我可以訪問特徵向量和值嗎?
試過'Vector3d'了,但如果我試圖用別的比'徵:: Matrix',我收到'在/ usr /本地/包括/ eigen3 /本徵/ src目錄/核心/ Matrix.h:292:7:錯誤: 'YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY' 不是 '徵::內部:: static_assertion' ' –
你是對的成員。我複製/粘貼了我的代碼,但是在這裏我使用了自伴解算器。我將編輯以獲得正確答案。 –
另外,你也可以使用'auto eigenvals = solver.eigenvalues();' –