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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值