0

我有一个 matlab 脚本,它接受一个输入 mat 文件并生成一个输出文件。目前我有一个能够执行这个脚本的 shell 脚本。

我正在使用ProcessBuilder类从 Java 执行这个脚本,一切运行良好。
我需要经常从 java 执行 matlab 脚本执行,每次执行脚本时都会创建 mcr 进程,执行脚本并终止 mcr。

我喜欢打开 MCR 进程并向 java 打开一个 matlab 会话,这样同一个进程保持活动状态,这样我就可以在同一个会话中多次执行脚本。

我发现 matlabcontrol 似乎适合这个。如何MatlabProxyFactory使用我在我的 shell 脚本中设置的 MCR 位置和 LD_LIBRARY_PATH 配置并在同一个会话中执行我的脚本?

我还遇到了一个工具 MATLAB JA Builder,但我目前不能使用它,因为它不是免费的。

谢谢!

4

1 回答 1

2

如果您使用的是matlabcontrol我认为您不需要 shell 脚本,只需告诉它您要运行的 m 文件的名称即可。如果您想将 shell 脚本与 a 结合使用ProcessBuilder,则必须启动该过程一次并保留对其输入流的引用。当您想要执行命令时,您将其写入该流。此外,您必须保持线程处于活动状态以清空 Matlab 的输出和错误流,否则它们将被填满并且 Matlab 将挂起。如果您想这样做,我建议您查看这个项目的源代码(我是其中的贡献者)。您感兴趣的课程是 RCaller。它或多或少是相同的,只是它调用 R 而不是 matlab。

于 2011-11-13T11:39:40.660 回答