c++ - 如何比较C++和MATLAB之间的结果?

标签 c++ matlab diagnostics

我有一个程序可以在几个阶段处理二维 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/

相关文章:

c++ - 如何将 GCC 诊断编译指示与 C++ 模板函数一起使用?

c++ - 是否有 C++ 函数来对 std::stack 进行排序?

MATLAB 子图导出

image - 在 Matlab 中通过 imwrite 将图像写入文件夹

matlab - 根据第一列中的数字拆分矩阵

c# - 如何获取可用系统内存的大小?

c++ - 在 DirectShow 的不同流中寻找

c++ - TBB tbb::memory_pool<tbb::scalable_allocator<char>> 如何正确使用?

C++使用分隔符逐行读取文件并将数据存储到列表中

winforms - 诊断 Windows 10 IoT 上的自定义 shell 为什么会出现黑屏