我的工作,需要反复地访问大量数据Matlab的结构的C程序。这是一个使用OpenGL的图形密集型程序,因此它必须快速。C指针Matlab的变量
多次访问与Matlab引擎这个数据结构似乎太长了(10-20〜毫秒每次调用engGetVariable和engPutVariable)。我认为这是因为这些函数将数据复制到内存中。
因此,而不是在数据结构本身使用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);
什么好处了'ap'变量在做什么?为什么不只是获得对应于'a'的'mxArray',并根据需要多次调用'mxGetPr'? – 2014-10-09 19:48:28
你看到的输出是什么? – AnonSubmitter85 2014-10-09 20:05:46
'a'数据结构可以在Matlab中在引擎访问它的时间之间修改。当'a'被修改时,它似乎被复制到不同的存储位置,所以'mxGetPr'不指向更新的副本。 – 2014-10-09 20:11:54