我正在研究一个需要重复访问大型Matlab数据结构的C程序.这是一个使用OpenGL的图形密集型程序,因此必须快速.
使用Matlab Engine重复访问此数据结构似乎花费的时间太长(每次调用engGetVariable和engPutVariable约10-20毫秒).我认为这是因为这些函数将数据复制到内存中.
因此,不是在数据结构本身上使用engGetVariable,而是在尝试获取指向数据结构的指针.如果我在指针上调用engGetVariable,我可以通过取消引用指针来访问C中的数据结构,而不必先将数据复制到内存中.但是到目前为止我还没能让这个工作.这样的事情可能吗?
// Make vars in matlab workspace
engEvalString(ep, "a=9");
engEvalString(ep, "ap=getPointer(a)");
// Get variables in C
ap = engGetVariable(ep, "ap");
a = *mxGetPr(ap);
printf("a = %f", a);
Run Code Online (Sandbox Code Playgroud)