每次迭代发送一个矩阵:Matlab"engine.h"c ++

Jav*_*ock 4 c++ iteration matlab-engine

这个问题来解决我在这有问题后的问题.我有一个c ++代码处理来自摄像机的帧并为每个处理过的帧生成一个矩阵.我想向matlab引擎发送每个矩阵,所以在执行结束时我已经存储了所有矩阵.我对如何做到这一点感到困惑,我在每次迭代中发送一​​个矩阵,但它一直在覆盖它,所以最后我只有一个.这是一个代码示例:

matrix.cpp

#include helper.h

mxArray *mat;   
mat = mxCreateDoubleMatrix(13, 13, mxREAL);     
memcpy(mxGetPr(mat),matrix.data, 13*13*sizeof(double));
engPutVariable(engine, "mat", mat);
Run Code Online (Sandbox Code Playgroud)

我还尝试使用计数器来命名不同的矩阵,但它不起作用,因为matlab引擎需要首先定义变量.任何帮助将不胜感激.谢谢.

Phi*_*ipp 5

您可以在matlab工作区中创建一个单元格数组,如下所示:

    mwSize size = 10;
    mxArray* cell = mxCreateCellArray(1, &size);

    for(size_t i=0;i<10;i++)
    {
        mxArray *mat;   
        mat = mxCreateDoubleMatrix(13, 13, mxREAL);     
        memcpy(mxGetPr(mat),matrix.data, 13*13*sizeof(double));

        mwIndex subscript = i;
        int index = mxCalcSingleSubscript(cell , 1,&subscript); 
        mxSetCell(m_cell , index, mat);
   }

   engPutVariable(engine, "myCell", cell);
Run Code Online (Sandbox Code Playgroud)