0

我有一个相当大的二维结果数据向量,我想写入一个 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文件中?就像我说的那样,我对此很陌生,所以如果这是一个愚蠢的问题,我很抱歉。有没有人有什么建议?

4

1 回答 1

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);
于 2014-06-19T12:58:41.063 回答