接触到一个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);