用cvSolve求矩阵方程AX=b的解

//Solve equation:AX=b

#include <cv.h>
using namespace std;

int main( int argc, char** argv )
{
    printf("\n\tSolve equation:AX=b\n\n");

    CvMat  *A=cvCreateMat(6,6,CV_32FC1);
    CvMat  *X=cvCreateMat(6,1,CV_32FC1);
    CvMat  *b=cvCreateMat(6,1,CV_32FC1);

    printf("\n\tA=\n\n");
    for(int row=0,value=0;row<6;row++)
    {
        for(int col=0;col<6;col++)
        {
            cvmSet(A,row,col,++value);
            printf("\t%.0f",cvmGet(A,row,col));
        }

        printf("\n");
    }

    printf("\n\tb=\n\n");
    for(int row=0,value=0;row<6;row++)
    {
        for(int col=0;col<1;col++)
        {
            cvmSet(b,row,col,++value);
            printf("\t%.0f",cvmGet(b,row,col));
        }

        printf("\n");
    }

    cvSolve(A,b,X,CV_SVD);

    printf("\n\tX=\n\n");
    for(int row=0;row<6;row++)
    {
        for(int col=0;col<1;col++)
        {
            printf("\t%f",cvmGet(X,row,col));
        }

        printf("\n");
    }

    cvReleaseMat(&A);
    cvReleaseMat(&b);
    cvReleaseMat(&X);

    getchar();

    return 0;
}

猜你喜欢

转载自blog.csdn.net/princewwj/article/details/81130660