我有一个很大的2D结果数据,我想写入mat文件。我对C ++很陌生,我读了一些关于如何使用MAT-File API的教程,我理解语法必须是这样的:
MATFile *pmat;
vector<double> data{....};
pmat=matOpen("ResultLog.mat", "w");
mxArray *A;
A=mxCreateDoubleMatrix(1, columns, mxREAL);
memcpy(mxGetPr(A), data, columns * sizeof(double));
matPutVariable(pmat, "NameOfDataVariable", A);
matClose(pmat);
mxDestroyArray(A);
我的问题是,由于我有一些数据要记录,我真的想把它放到一个循环中。但是,我如何才能为每个循环更改 NameOfDataVariable ?或者我是否必须将每行数据分别输入到mat文件中?就像我说我对这个很新,所以我很抱歉,如果这是一个愚蠢的问题。有没有人有什么建议?
答案 0 :(得分:2)
你可以做到,例如如下
MATFile *pmat;
vector<double> data{....};
pmat=matOpen("ResultLog.mat", "w");
// I actually don't know what loop conditions you have but
// this should give you an idea
int cnt = 0;
for(vector<double>::iterator it = data.begin();
it != data.end();
++it,++cnt) {
mxArray *A;
A=mxCreateDoubleMatrix(1, columns, mxREAL);
memcpy(mxGetPr(A), *it, columns * sizeof(double));
std::ostringstream varname;
varname << "NameOfDataVariable" << cnt;
matPutVariable(pmat, varname.str().c_str(), A);
mxDestroyArray(A);
}
matClose(pmat);