我必须从 c++ 中读取一些 .mat 数据文件,我通读了文档,但我想知道如何以干净优雅的方式处理数据,例如使用 std:vector(modest .mat file size(10M~ 1G),但内存问题要认真对待)
我的功能是这样的:
#include <stdio.h>
#include "mat.h"
#include <vector>
int matread(const char *file, const vector<double>& pdata_v) {
MATFile *pmat;
pmat=matOpen("data.mat","r");
if (pmat == NULL) {
printf("Error opening file %s\n", file);
return(1);
}
mxArray *pdata = matGetVariable(pmat, "LocalDouble");
// pdata -> pdata_v
mxDestroy pa1; // clean up
return 0;
}
所以,问题是,如何有效且安全地从 mxArray *pdata 数组复制到向量 pdata_v?
原文由 lorniper 发布,翻译遵循 CC BY-SA 4.0 许可协议
以下是使用 MAT-API 的示例:
test_mat.cpp
首先,我们构建独立程序,并将一些测试数据创建为 MAT 文件:
现在我们运行程序: