gpt4 book ai didi

c++ - 从 C++ 循环写入 .mat 文件

转载 作者:行者123 更新时间:2023-11-28 02:46:14 24 4
gpt4 key购买 nike

我有一个相当大的二维结果数据 vector ,我想将其写入 mat 文件中。我是 C++ 的新手,我阅读了一些关于如何使用 MAT 文件 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 文件中?就像我说的那样,我对此很陌生,所以如果这是一个愚蠢的问题,我很抱歉。有没有人有什么建议?

最佳答案

你可以这样做如下

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);

关于c++ - 从 C++ 循环写入 .mat 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24306686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com