我有一个代码可以在每次迭代中处理帧并生成一个矩阵。我的最终目标是将矩阵数据发送到 matlab,以便检查每一帧矩阵的演变。为了实现这一点,我在头文件 (helper.h) 中定义了一个静态变量 Engine。
#include "engine.h";
#include "mex.h";
static Engine *engine;
在 main() 程序中,我只打开一次引擎:
#include helper.h
main(){
if (!(engine = engOpen(NULL))) {
MessageBox ((HWND)NULL, (LPSTR)"Can't start MATLAB engine",(LPSTR) "pcTest.cpp", MB_OK);
exit(-1);}
//here comes frame processing using a while loop
.
. //a function is called (defined in matrix.cpp)
.
//frame processing ends
}
在 matrix.cpp 里面是我想要发送到 Matlab 引擎的矩阵,所以我做了这样的事情:
#include helper.h
mxArray *mat;
mat = mxCreateDoubleMatrix(13, 13, mxREAL);
memcpy(mxGetPr(mat),matrix.data, 13*13*sizeof(double));
engPutVariable(engine, "mat", mat);
我想以最有效的方式使用指向引擎的指针。我对如何正确使用matlab引擎有点困惑。
欢迎任何帮助,因为 matlab 文档和示例根本没有帮助,因为它们将所有代码都放在同一个文件中并且它们不使用迭代。提前致谢。
编辑
第一个关于引擎指针的问题已解决。解决方案是将其声明为 extern。
#include "engine.h";
#include "mex.h";
extern Engine *engine;
并在 main.cpp
#include helper.h
Engine *engine=NULL;
main(){}