没有得到正确的EigenValue / EigenVector(eigenVV)

时间:2016-03-25 03:37:23

标签: opencv3.0 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);

编辑: 这是eigenVec2变量的输出

-0.236854,0.862897,-0.446442,

0.969565,0.239264,-0.0519332,

-0.0620046,0.445154,0.893304,

1 个答案:

答案 0 :(得分:0)

我想使用EigenVector EigenValue来创建投影矩阵,并将其与我所拥有的投影矩阵进行比较。当我的答案与我的答案不符时,我认为我的答案是错误的。但我发现结果投影矩阵并不完全相同。它与比例因子不同。所以我使用eigenvv的方式是正确的。