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