libmatio读取-v6 mat文件变量笔记

    技术2022-05-20  43

    libmatio是一个开源mat文件读写库,该库已经应用到了Scilab中。单独使用这个库,能够用C/C++实现对mat文件的读写(目前只支持版本6以下)。

    一、读普通数组

       int   start[2]={0,0},stride[2]={1,1},edge[2]={1,1}, err = 0;   double ptr[1];   mat_t  *mat;   matvar_t *matvar;

       mat = Mat_Open("digital_parameter_pro_v6.mat",MAT_ACC_RDWR);

       matvar = Mat_VarReadInfo(mat,"MaxPixelValue");

       Mat_VarReadData(mat,matvar,ptr,start,stride,edge);

       Mat_VarFree(matvar);

       Mat_Close(mat);

    二、读cell

        /*以下代码测试读取cell型数据*/ double* data; data = (double*)malloc(6*6*sizeof(double)); mat_t *mat; matvar_t *matvar; matvar_t **matCellvar;

     int   start[2],stride[2],edge[2], err; start[0]=0;start[1]=0;//数组起始下标;第一个数下标为0 stride[0]=1;stride[1]=1;//读数组是跨步步距,参照Matlab中的格式——start:stride:edge edge[0]=2;edge[1]=2;//数组终止下标 err = 0;

     mat=Mat_Open("left_200_080305_v6.mat",MAT_ACC_RDONLY); matvar = Mat_VarReadInfo(mat,"ProfilesCov");//读入mat文件中的cell变量ProfilesCov start[0]=0;start[1]=0;//数组起始下标;第一个数下标为0 stride[0]=1;stride[1]=1;//读数组是跨步步距,参照Matlab中的格式——start:stride:edge edge[0]=2;edge[1]=60;//数组终止下标 matCellvar = Mat_VarGetCells(matvar,start,stride,edge);

     start[0]=0;start[1]=0;//数组起始下标;第一个数下标为0 stride[0]=1;stride[1]=1;//读数组是跨步步距,参照Matlab中的格式——start:stride:edge edge[0]=6;edge[1]=6;//数组终止下标    Mat_VarReadData(mat,*matCellvar,data,start,stride,edge);    int i;    for(i=0;i<36;i++)    {     printf("%f/n",data[i]);    }


    最新回复(0)