从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。