c++ 写.mat格式文件

接触到一个matalb的程序,关于数据输出这一块,因不会使用oracle,只好用c++生成.mat格式的文件,按照matlab程序里面要求,将数据生成相应的结构形式。


1.创建double类型的数组

代码:

MATFile *pmatFile = matOpen("D:\\test.mat","w");

int Num = VecData.size();

double *dparray = new double[Num*4];

for(int i = 0;i<Num;i++)

{

   dparray[i] =VecData[i].id_1;

   dparray[Num+i] =VecData[i].id_2;

   dparray[Num*2+i] =VecData[i].id_3;

   dparray[Num*3+i] =VecData[i].id_4;

}

mxArray *pmxarray = mxCreateDoubleMatrix(Num,4,maREAL);

if(pmxarray==NULL)

{

   return;

}

memcpy_s((void*)mxGetPr(pmxarray),Num*4*sizeof(double),dparray,Num*4*sizeof(double));

matPutVariable(pmatFile,"DoubleArray",pmxarray);

delete dparray;

dparray = NULL;

2.创建cell类型数组

代码:

const mwSize dw[2] = {num,2};

mxArray *pmxCell = mxCreateCellArray(2,dw);

if(pmxCell == NULL)

{

   return;

}

int Num = VecstrData.size();

for(int i = 0;i<Num;i++)

{

   mxArray *strtemp = mxCreateString(VecstrData[i].strid.c_str());

   mxSetCell(pmxCell,i,strtemp);

   mxArray *Dou = mxCreatedoublescalar(VecstrData[i].id);

   mxSetCell(pmxCell,Num+i,Dou);

}

matPutVariable(pmatFile,"cellarray",pmxCell);

matClose(pmatFile);


猜你喜欢

转载自blog.csdn.net/ru_lan_ruo_shui/article/details/51815231