Sza*_*lcs 6 c linux macos matlab matlab-engine
MATLAB Engine API允许从C程序访问MATLAB功能.要设置MATLAB Engine会话,可以调用该engOpen函数.默认情况下,这将启动MATLAB的新实例,专门用于Engine应用程序.
我想要的是使用Engine应用程序中已经运行的 MATLAB会话,以便我可以访问它的变量. 我需要在Linux和OS X上执行此操作.
Engine接口在Windows(它使用COM服务器)和Unix上有非常不同的实现.在Unix上,我们必须将MATLAB可执行文件的位置传递给engOpenWindows,而在引擎使用COM服务器的情况下,我们不会.在Windows上是可以使用MATLAB的现有实例Engine应用程序:只要运行enableservice('AutomationServer', true).在Unix系统上有什么解决方案吗?
我希望有一个通用的解决方案 - 可能没有文档 - 因为,基于文档,Python接口似乎允许这样做.我在OS X上测试了这个并且它可以工作.例如,我可以启动交互式MATLAB会话,设置变量a=5,然后启动Python,连接到同一个会话并能够检索此变量. 也可以从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
Run Code Online (Sandbox Code Playgroud)
然后我们可以谷歌搜索这些符号或grep MATLAB安装目录中包含它们的文件.出现了纯文本中没有任何内容.
基于此,我相信Python接口使用的是未记录的C++ Engine API,它与旧的C++引擎API不同.