使用MATLAB Engine连接已运行的MATLAB

The MATLAB Engine API允许从C程序访问MATLAB功能.要设置MATLAB Engine会话,可以调用engOpen函数.默认情况下,这将启动MATLAB的新实例,专门用于Engine应用程序.

我想要的是使用Engine应用程序中已经运行的MATLAB会话,以便我可以访问它的变量.我需要在Linux和OS X上执行此操作.

Engine接口在Windows(它使用COM服务器)和Unix上有非常不同的实现.在Unix上,我们必须将MATLAB可执行文件的位置传递给engOpen,而在Windows上(Engine使用COM服务器)我们不会.在Windows上,可以使用MATLAB for Engine应用程序的现有实例:只运行enableservice('AutomationServer',true).在Unix系统上有任何解决方案吗?

我希望有一个通用的解决方案 – 可能没有记录 – 因为,based on the documentation,the Python interface seems to allow this.我在OS X上测试了这个并且它有效.例如,我可以启动交互式MATLAB会话,设置变量a = 5,然后启动Python,连接到同一个会话并能够检索此变量. It is also possible to connect to an already running session from Java.

我需要从C开始,而不是从Python开始,因为它将在MATLink,Mathematica-MATLink接口中使用. Python界面如何实现这一目标?如何使用C重现相同的内容?

如果有一个替代的C API而不是“MATLAB Engine”使这成为可能(可能是Python接口所基于的其他一些文档化或​​未记录的C API),我可以接受这个作为答案.我想要一个可以利用已经运行的交互式MATLAB会话的C程序.

更新:

Python界面中的一些讨论显示它使用了一个名为libmwengine_api的库.这与记录的MATLAB Engine C API不同.我们可以查看这个库中的符号.在OS X上,

nm -g libmwengine_api.dylib | c++filt

然后我们可以谷歌搜索这些符号或grep MATLAB安装目录中包含它们的文件.出现了纯文本中没有任何内容.

基于此,我相信Python接口使用的是未记录的C引擎API,它与旧的C文档不同.

最佳答案

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...