예제 #1
0
//**************************************************************
// ilMatTestFun
//     performs tests of matrix functions:
//     ilEuclidDist, ilEuclidNorm, ilMinAtDim
//***************************************************************
void ilMatFunTest()
{
#if 0 //*** testing ilEuclidNorm (comparison with matlab)
    std::string matfnamein = "C:/temp/matdata3.xml";
    std::string matfnameout = "C:/temp/matdata4.xml";

	pFileStorage fsr = OpenFileStorage(matfnamein, RWM_Read);
    pMat mat1 = ReadMatrixFromFile(fsr, "matrix1");

    //*** normalize
    pMat mat2 = CreateMat(mat1->rows, mat1->cols, mat1->type);
    ilEuclidNorm(mat1, mat2);

    //*** Save result in xml
    pFileStorage fsw = OpenFileStorage(matfnameout, RWM_Write);
    WriteMatrixToFile(fsw, "matrix2", mat2);

    /*
    % Matlab test code
    m1=rand(10,5);
    xmlsavematrices('C:/temp/matdata3.xml',{m1},{'matrix1'});
        %%% run ilMatFunTest();
    [matval,matname]=xmlreadmatrices('c:/temp/matdata4.xml');
    enorm=euclidnorm(m1);
    err=mean(abs(enorm(:)-matval{1}(:)))
    */
#endif

#if 0 //*** testing ilEuclidDist (comparison with matlab)
    std::string matfnamein = "C:/temp/matdata1.xml";
    std::string matfnameout = "C:/temp/matdata2.xml";
    // we don't own the matrices below -- file storage does
    pFileStorage fsr = OpenFileStorage(matfnamein, RWM_Read);
    pMat mat1 = ReadMatrixFromFile(fsr, "matrix1");
    pMat mat2 = ReadMatrixFromFile(fsr, "matrix2");

    //*** compute Euclidean distance
    pMat mat3 = CreateMat(mat1->rows, mat2->rows, mat1->type);
    ilEuclidDist(mat1, mat2, mat3);

    //*** Save result in xml
    pFileStorage fsw = OpenFileStorage(matfnameout, RWM_Write);
    WriteMatrixToFile(fsw, "matrix3", mat3);

//    cvReleaseMat(&mat1); // TODO do we have to?
//    cvReleaseMat(&mat2); // TODO do we have to?

    /*
        % Matlab test code
        m1=rand(10,5); m2=rand(20,5);
        xmlsavematrices('C:/temp/matdata1.xml',{m1,m2},{'matrix1','matrix2'});
            %%% run ilMatFunTest();
        [matval,matname]=xmlreadmatrices('c:/temp/matdata2.xml');
        edist=eucliddist(m1,m2);
        err=mean(abs(edist(:)-matval{1}(:)))
    */
#endif
}
예제 #2
0
파일: main.cpp 프로젝트: timthirion/ezw
//------------------------------------------------------------------------------
// main
//------------------------------------------------------------------------------
int main (int argc, char * const argv[]) {
    std::cout.setf(std::ios::right);
    std::cout << std::setprecision(4) << std::fixed << std::showpoint;
    std::cout << std::setfill(' ');

    if (argc == 4 && !strncmp(argv[1], "-c", 2))
    {
        // Compress
        Matrixf M;
        ReadMatrixFromFile(M, std::string(argv[2]));
        Scale(M, 2.0f, M);
        ZerotreeEncode(std::string(argv[3]), M);
    }
    else if (argc == 4 && !strncmp(argv[1], "-d", 2))
    {
        // Decompress
        Matrixf M;
        ZerotreeDecode(M, std::string(argv[2]));
        WriteMatrixToFile(M, std::string(argv[3]));
    }
    else
    {
        printf("[-c|-d] [input] [output]\n");
    }
    return 0;
}