📄 svd.cpp
字号:
//對稱矩陣奇異值分解
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
void PrintMatrix(CvMat *Matrix,int Rows,int Cols);
double Array1[]={2,-2,4,-2,2,-4,4,-4,8};
int main()
{
CvMat *Matrix1=cvCreateMat(3,3,CV_64FC1);
CvMat *W=cvCreateMat(3,3,CV_64FC1);
CvMat *V=cvCreateMat(3,3,CV_64FC1);
CvMat *U=cvCreateMat(3,3,CV_64FC1);
CvMat *V_T=cvCreateMat(3,3,CV_64FC1);
CvMat *ResultMatrix=cvCreateMat(3,3,CV_64FC1);
cvSetData(Matrix1,Array1,Matrix1->step);
cvSVD(Matrix1,W,U,V);
printf("\nW\n");
PrintMatrix(W,W->rows,W->cols);
printf("\nU\n");
PrintMatrix(U,U->rows,U->cols);
printf("\nV\n");
PrintMatrix(V,V->rows,V->cols);
printf("\nValid\n");
cvmMul(U,W,ResultMatrix);
cvTranspose(V,V_T);
cvmMul(ResultMatrix,V_T,ResultMatrix);
PrintMatrix(ResultMatrix,ResultMatrix->rows,ResultMatrix->cols);
system("pause");
}
void PrintMatrix(CvMat *Matrix,int Rows,int Cols)
{
for(int i=0;i<Rows;i++)
{
for(int j=0;j<Cols;j++)
{
printf("%.2f ",cvGet2D(Matrix,i,j).val[0]);
}
printf("\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -