我有一个程序可以在几个阶段处理二维 double 组。我想将其结果与 MATLAB 进行比较。我也许可以使用 std::cout 在处理之前和之后将 2D 数组的一些 8x8 大小的 block (该算法适用于 block )打印到控制台上,然后将这些数字手动输入到 MATLAB 中。但这很容易出错并且乏味。有没有办法方便地将这些数据导入 MATLAB?
Matlab 内置了函数来简化许多事情。我想将 C++ 程序中处理前后的数据获取到 MATLAB 中,然后对其进行一些检查,例如绘制图形等。如何将 C++ 程序中的数据导入 MATLAB?
最佳答案
您考虑过使用 mex 函数吗?如果您确实使用它们,我强烈建议使用 Armadillo库,提供了方便的数据类型和方法在 MATLAB 和 C++ 之间切换。
例如,
#include "mex.h"
#include <armadillo>
#include "armaMex.hpp"
#include <sstream>
// gateway function
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
// get data from MATLAB
mat X = conv_to<mat>::from(armaGetPr(prhs[0],true));
mat Y = conv_to<mat>::from(armaGetPr(prhs[1],true));
// do some stuff
mat Z = X + Y;
// Print data in matlab
std::ostringstream buffer;
buffer << "X = " << X << endl;
buffer << "Y = " << Y << endl;
buffer << "Z = " << Z << endl;
mexPrintf("%s", buffer.str().c_str());
// send data back to Matlab
plhs[0] = armaCreateMxMatrix(Z.n_rows, Z.n_cols, mxDOUBLE_CLASS, mxREAL);
armaSetPr(plhs[0], conv_to<mat>::from(Z));
return;
}
关于c++ - 如何比较C++和MATLAB之间的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43903860/