2016-03-25 30 views
-1

eigenVV'yi nasıl kullanacağımı anlamaya çalışıyorum ama şu ana kadar şansınız yok. Aşağıda benim kodum var ve herhangi biriniz yanlış yaptığımı işaret edebilir mi? Teşekkürler.Doğru EigenValue/EigenVector (eigenVV) alınmıyor

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); 

Düzenleme: budur ben özvektör özdeğer projeksiyon matrisi oluşturmak için kullanabilirsiniz ve ben projeksiyon matris ile karşı karşılaştırarak istedi

-0.236854,0.862897,-0.446442, 

0.969565,0.239264,-0.0519332, 

-0.0620046,0.445154,0.893304, 

cevap

0

eigenVec2 değişkenin çıktı. Cevabımın yanlış olduğunu düşündüğümle eşleşmediğimi düşündüm. Ama sonuçta ortaya çıkan yansıtma matrisinin tam olarak aynı olmadığını anladım. Ölçek faktörüne göre farklılık gösterir. Yani eigenvv kullanma şeklim doğru.