主要内容

连接Java运行MATLAB会话

查找并连接到MATLAB

您可以连接Java®引擎共享MATLAB®在本地机器上运行的会话。要连接到一个共享的MATLAB会话:

  • 启动MATLAB作为一个共享引擎会话,或使一个正在运行的MATLAB进程共享使用matlab.engine.shareEngine

  • 方法查找MATLAB共享会话的名称MatlabEngine.findMatlabMatlabEngine.findMatlabAsync静态方法。

  • 将包含共享MATLAB会话名称的字符串传递给MatlabEngine.connectMatlabMatlabEngine.connectMatlabAsync静态方法。这些方法将Java引擎连接到共享会话。

如果您在调用时没有指定共享MATLAB会话的名称MatlabEngine.connectMatlabMatlabEngine.connectMatlabAsync,该引擎使用第一个共享的MATLAB会话创建。如果没有可用的共享MATLAB会话,引擎创建一个共享MATLAB会话并连接到这个会话。

有关这些方法的描述,请参见com.mathworks.engine.MatlabEngine

连接到MATLAB同步

通过调用将MATLAB会话转换为共享会话matlab.engine.shareEngine从MATLAB。

matlab.engine.shareEngine

查找会话并从Java同步连接。

进口com.mathworks.engine。*;public class javaFindConnect {public static void main(String[] args) throws Exception {String[] engines = MatlabEngine.findMatlab();MatlabEngine eng = MatlabEngine. connectmatlab(引擎[0]);//在共享的MATLAB会话中执行命令eng.eval("plot(1:10);打印(‘myPlot’,‘-djpeg’)”);eng.close ();} }

连接到MATLAB异步

通过调用将MATLAB会话转换为共享会话matlab.engine.shareEngine从MATLAB。

matlab.engine.shareEngine

查找会话并从Java异步连接。

进口com.mathworks.engine。*;进口java.util.concurrent.Future;public class javaFindConnectAsync {public static void main(String[] args) throws Exception {Future eFuture = MatlabEngine.findMatlabAsync();字符串[]引擎= eFuture.get();Future engFuture = MatlabEngine. connectmatlabasync(引擎[0]);//在其他线程上工作MatlabEngine eng = engFuture.get();//在共享的MATLAB会话中执行命令Future vFuture = engl . evalasync ("plot(1:10);打印(‘myPlot’,‘-djpeg’)”);eng.close ();} }

指定共享会话名称

方法时,可以指定共享MATLAB会话的名称matlab.engine.shareEngineMATLAB函数。这样做就消除了使用的需要MatlabEngine.findMatlabMatlabEngine.findMatlabAsync去找名字。

例如,启动MATLAB并命名共享会话myMatlabEngine

matlab - r”matlab.engine.shareEngine (myMatlabEngine)”

从Java连接到命名的MATLAB会话。

进口com.mathworks.engine。*;public class javaNameConnect {public static void main(String[] args) throws Exception {String[] myEngine = {"myMatlabEngine"};MatlabEngine eng = MatlabEngine. connectmatlab (myEngine[0]);//在共享的MATLAB会话中执行命令eng.eval("plot(1:10);打印(‘myPlot’,‘-djpeg’)”);eng.close ();} }

相关的话题