我在从 Java 运行 MATLAB 代码时遇到问题。如果您对此有所了解,您能帮帮我吗?
5 回答
如果您不想购买 MathWork 的 MATLAB Builder for Java Toolbox,可以使用 MATLAB 未记录的 JMI(Java-MATLAB 接口)。在 CSSM 新闻组(或 Google)中搜索 JMI 或基于 JMI 的 JMatLink。MATLAB 代码本身充满了 JMI 使用示例 - 使用 MATLAB 编辑器的搜索工具在整个 MATLAB 安装中搜索“jmi”。
请注意,MathWorks 既没有记录也没有正式支持 JMI。此外,如果使用不当,它可能会挂起或崩溃您的应用程序。但它是免费的,不像工具箱。
我使用 Java Builder 在 java 应用程序中运行 matlab 脚本/函数,它似乎非常简单和有用。
为此,您需要拥有 Java Builder JA 工具箱来将 matlab 脚本/函数部署为 java 类。
然后,您需要将(转换后的)java 类添加到您的 java 项目库中,另外还需要添加 javabuilder jar 文件。
完成上述步骤后,只需在代码中调用类名即可轻松运行matlab脚本(现在是项目库中的java类)。如果该类是 matlab 函数,您可以传递参数并轻松获取返回值。
但是当然,这不是唯一的方法。但这对我来说似乎比较容易。
我希望这能回答你的问题。
除了使用 Yair 提到的未记录的 JMI(Java MATLAB 接口)之外,您还可以使用matlabcontrol,它是一个 Java API,它包装了 JMI,使其更易于使用。它有据可查,并有一个介绍性的演练。与直接使用 JMI 不同,它也可以在 MATLAB 之外运行 Java 程序时使用。
这是一个允许您将 MATLAB 代码部署为 java 类的包。
有两种方法可以做到这一点:
- 使用具有 C 接口的 Matlab 引擎(请参阅第一个答案的链接)。必须在要运行它的所有机器上安装 Matlab(有关详细信息,请参阅 Matlab 许可证)
- 使用 Matlab Builder for Java 编译 matlab 代码并直接生成函数的 Java 接口。使用此解决方案,您需要使用 Matlab 编译器和 Matlab Builder for Java,但您可以部署您的解决方案而无需支付任何费用。请注意,您必须在每台机器上安装 Matlab 编译器运行时 (MCR),但这是免费的。