2016-03-25 15 views
-1

私はeigenVVを使用する方法を理解しようとしていますが、これまでのところ運がありません。次のコードは私のコードであり、誰かが私が間違っていることを指摘できますか?ありがとう。正しいEigenValue/EigenVector(eigenVV)を取得していません

CvMat* A2; 
A2 = cvCreateMat(3, 3, CV_32FC1); 
cvmSet(A2, 0, 0, 1); 
cvmSet(A2, 0, 1, 3); 
cvmSet(A2, 0, 2, -3); 
cvmSet(A2, 1, 0, -3); 
cvmSet(A2, 1, 1, 7); 
cvmSet(A2, 1, 2, -3); 
cvmSet(A2, 2, 0, -6); 
cvmSet(A2, 2, 1, 6); 
cvmSet(A2, 2, 1, -2); 

CvMat* transp_A2; 
CvMat* ATA2; 
CvMat* eigenVal2; 
CvMat* eigenVec2; 

transp_A2 = cvCreateMat(3, 3, CV_32FC1); 
ATA2 = cvCreateMat(3, 3, CV_32FC1); 
eigenVal2 = cvCreateMat(3, 1, CV_32FC1); 
eigenVec2 = cvCreateMat(3, 3, CV_32FC1); 

cvTranspose(A2, transp_A2); 
cvMatMul(transp_A2, A2, ATA2); 
cvEigenVV(ATA2, eigenVec2, eigenVal2); 

編集: これは私が固有ベクトル固有値は、射影行列を作成して、私が持っている投影行列とのに対してそれを比較することを使用していた変数

-0.236854,0.862897,-0.446442, 

0.969565,0.239264,-0.0519332, 

-0.0620046,0.445154,0.893304, 

答えて

0

eigenVec2の出力です。私は私の答えが間違っていると思った。しかし、私は、結果の投影行列がまったく同じではないことを理解しました。スケールファクタによって異なります。だから私はeigenvvを使う方法は正しいです。

関連する問題