【发布时间】:2019-11-21 09:51:51
【问题描述】:
问题
我有两个工具用 MATLAB 编写(我不是作者):
- 第一个允许我从 SQL 数据库中检索一些数据,但它仅适用于 MATLAB 64 位(我有 MATLAB 2016b 64 位)。
- 第二个使用从第一个工具检索到的数据,并通过 在 32 位系统上编译的 DLL,它会得到一些输出。如前所述, 此工具仅适用于 MATLAB 32 位(我有 MATLAB 2013a 32 位)。
我想做的是:
- 在 MATLAB 64 位中从 SQL 获取数据
- 以某种方式将它们“发送”到 MATLAB 32 位
- 在 MATLAB 32 位上运行该工具
- 将 MATLAB 32 位的输出“返回”到 MATLAB 64 位
我知道可以使用 IPC 机制找到解决方案,但我不确定如何找到它们或如何在 MATLAB 中使用它们。有人用过这种东西吗?
查看 MATLAB 文档,我看到可以创建 COM 对象,但我不确定如何使用它在 MATLAB 32 位中运行一些函数。
解决方案
正如下面@nekomatic 所建议的,如果我按照建议的方式运行代码,一切都对我有用,但不包括下面系统命令中的-automatic。
最终的系统命令格式为
system('"C:\path\to\R2013a\matlab.exe" -wait -r "mycommand; exit"')
mycommand 是一个 MATLAB 脚本,它加载输入文件,执行一些操作,然后保存输出文件。
【问题讨论】:
-
这里是速度问题吗?例如,您是否可以在每次需要运行第二个工具时等待 MATLAB R2013a 启动,或者您是否需要在几秒钟或更短的时间内完成该过程?
-
速度没问题。我只想主要使用 MATLAB 64bit 来处理数据。所以,我需要从 MATLAB 64bit 启动一个 MATLAB 32bit 会话,在 MATLAB 32bit 中执行一个函数,将输出返回到 MATLAB 64bit。
标签: matlab dll ipc 32bit-64bit