从Java运行MATLAB函数

时间:2009-10-22 15:13:28

标签: java matlab

我在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时都会打开一个单独的窗口,这是一个问题,因为我想多次运行。

5 个答案:

答案 0 :(得分:7)

诀窍是使用MatlabControl类http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html。它非常易于使用,您可以完全按照自己的意愿(以及更多)进行操作。

答案 1 :(得分:7)

matlabcontrol基于Jeff提到的MatlabControl使用的相同底层MATLAB库,但它更新,更可靠,更具记录性。要开始使用,请查看walkthrough

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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

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