从Java运行MATLAB函数

我在MATLAB中有一个.m文件,我想从Java调用一个解决scheme作为一个string或任何在Java中。 这听起来很简单,但由于某种原因,我不能使它工作。

我试过这个:

matlab -nosplash -wait -nodesktop -r myFunction 

但我不知道如何parsing答案,因为MATLAB打开它自己的命令行(在Windows中)。

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

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

也似乎每次我打电话给MATLAB打开一个单独的窗口,这是一个问题,因为我想运行这么多次。

诀窍是使用MatlabControl类http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html 。 这是非常容易使用,你可以做你正在做什么(和更多)。

matlabcontrol基于Jeff提到的MatlabControl使用的相同的底层MATLAB库,但是更新,更可靠,并且logging在案。 要开始,请看一下演练 。

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

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

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

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

只需下载JaCoB软件包,然后查看文档文件夹中的一些文档。 你也必须在你的path中包含Jacob DLL。