使用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文档不同.

最佳答案

相关文章

文件查找(find) 1 find 简单的说,就是实时查找指定的内容或条件。特点:最新、最快、最准确。 用法:...
非交互式添加分区 方法一 添加/deb/sdb 下的分区,其实位置为1到1000M,第二个分区位置为1001至3000M,...
编译安装httpd 1 去官网下载源码包 为避免非法软件,一定要去官网下载http://www.apache.org httpd-2.4...
gdisk用法 gdisk - InteractiveGUIDpartitiontable (GPT) manipulator GPTfdisk (akagdisk) isatext-mo...
1 一定用快捷键 这里简单的说下几个常用的快捷按键。 1.1 移动光标快捷键 Crtl + a 光标回到命令行...
bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径。如果test命令中列出的条件成立...