从Java运行MATLAB函数
我在MATLAB中有一个.m文件,我想从Java调用它,以字符串或Java中的任何形式获取解决方案。这听起来很简单,但由于某种原因,我无法让它工作 我试过这个:从Java运行MATLAB函数,java,matlab,Java,Matlab,我在MATLAB中有一个.m文件,我想从Java调用它,以字符串或Java中的任何形式获取解决方案。这听起来很简单,但由于某种原因,我无法让它工作 我试过这个: matlab -nosplash -wait -nodesktop -r myFunction 但我不确定如何解析答案,因为MATLAB打开了自己的命令行(在Windows中) 我用这个,但它不返回任何东西 Process p = Runtime.getRuntime().exec(commandToRun); BufferedRe
matlab -nosplash -wait -nodesktop -r myFunction
但我不确定如何解析答案,因为MATLAB打开了自己的命令行(在Windows中)
我用这个,但它不返回任何东西
Process p = Runtime.getRuntime().exec(commandToRun);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
而且,每次调用MATLAB时,似乎都会打开一个单独的窗口,这是一个问题,因为我想多次运行它。诀窍是使用MatlabControl类。它非常易于使用,并且您可以完全完成您想要做的事情(以及更多)。存在一个名为JaCoB()的Java COM桥,您可以使用它在后台自动启动Matlab作为COM服务器。然后,您可以按照Matlab帮助中的说明与Matlab COM接口交互 虽然这是一个非常通用的接口,但它提供了足够的灵活性,可以像在您的案例中那样轻松地调用Matlab 只需下载JaCoB包,并在docs文件夹中查找一些文档。
您还必须在路径中包含Jacob DLL。基于Jeff提到的MatlabControl使用的相同底层MATLAB库,但更为最新、可靠和有文档记录。首先,请看一看。是一个基于Java RMI(Java远程方法调用API)的开源库,适合您的需要。在Matlab R2016b中,MathWorks添加了它,它允许从Java执行Matlab代码。也许
-logfile
命令选项可能会有所帮助:Jeff!罗布!很高兴在这里看到你们。