• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何让Matlab保持mex会话存活

c/c++ 来源:user2224430 4次浏览

我的问题是如何编程Matlab和我的C++代码,以便它们可以交互。更具体地说,我有一个C++程序,用于处理数据,创建一个对象,导出该对象的统计信息并写入mat文件。然后我将在matlab中加载它来做进一步的分析和可视化。然而,处理数据和创建对象所花费的时间是巨大的,而导出统计数据的时间可以忽略不计。另一方面,有很多统计数据和它们的不同组合,很难预测我们将要使用什么样的组合。所以我希望我可以多次运行“统计”部分,而不必重复处理数据。如何让Matlab保持mex会话存活

我的问题是:我可以问Matlab:1.调用C++代码; 2.处理完数据并创建对象后,将该对象保留在内存中3.再次调用C++代码以请求将统计信息加载到我的工作空间中。 4.用不同的统计数据重复3。 谢谢

===========解决方案如下:

完成此操作的一种方法是声明您想要在您的C++ mex code中再次访问的变量为global。这些变量将保留在内存中,并且您可以再次访问它们(当您调用mex函数时),直到您清除该mex函数或关闭Matlab会话。我为此使用了全局变量,它对我来说工作得很好。

另一种选择是使用persistent variables。从文档

持久变量与全局变量类似,因为MATLAB®软件为两者创建永久存储。它们与 全局变量不同,因为持久变量只有在声明它们的 函数中才是已知的。这可以防止其他函数或MATLAB 命令行更改变量的持久性 。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)