【问题标题】:Running MATLAB function from Java从 Java 运行 MATLAB 函数
【发布时间】:2010-12-09 03:21:06
【问题描述】:

我在 MATLAB 中有一个 .m 文件,我想从 Java 中调用它以获取字符串或 Java 中的任何内容的解决方案。这听起来很简单,但由于某种原因我无法让它工作。

我试过了:

matlab -nosplash -wait -nodesktop -r  myFunction

但我不确定如何解析答案,因为 MATLAB 会打开它自己的命令行(在 Windows 中)。

我使用这个,但它没有返回任何东西。

Process p = Runtime.getRuntime().exec(commandToRun);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

似乎每次我调用 MATLAB 时它都会打开一个单独的窗口,这是一个问题,因为我想多次运行它。

【问题讨论】:

标签: java matlab


【解决方案1】:

在 Matlab R2016b 中,MathWorks 添加了 MATLAB Engine API for Java,允许从 Java 执行 MATLAB 代码。

【讨论】:

    【解决方案2】:

    JAMAL 是一个开源的、基于 Java RMI(Java 远程方法调用 API)的库,可满足您的需求

    【讨论】:

      【解决方案3】:

      matlabcontrol 基于 Jeff 提到的 MatlabControl 使用的相同底层 MATLAB 库,但更新、可靠和文档化。要开始使用,请查看walkthrough

      【讨论】:

        【解决方案4】:

        有一个很好的 Java-COM-Bridge,叫做 JaCoB (http://sourceforge.net/projects/jacob-project/),您可以使用它在后台自动启动 Matlab 作为 COM-Server。然后,您可以按照 Matlab 帮助中的说明与 Matlab COM 接口进行交互。

        虽然这是一个非常通用的接口,但它提供了足够的灵活性,可以像您的情况一样轻松地对 Matlab 进行几次调用。

        只需下载 JaCoB 包并在 docs 文件夹中查找一些文档。 您还必须在路径中包含 Jacob DLL。

        【讨论】:

          【解决方案5】:

          诀窍是使用 MatlabControl 类http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html。它非常易于使用,您可以做您想做的事情(甚至更多)。

          【讨论】:

          • 杰夫!抢!很高兴在这里见到你们。
          猜你喜欢
          • 2017-07-30
          • 2017-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多