您可以连接Java®引擎共享MATLAB®在本地机器上运行的会话。要连接到一个共享的MATLAB会话:
启动MATLAB作为一个共享引擎会话,或使一个正在运行的MATLAB进程共享使用matlab.engine.shareEngine
.
方法查找MATLAB共享会话的名称MatlabEngine.findMatlab
或MatlabEngine.findMatlabAsync
静态方法。
将包含共享MATLAB会话名称的字符串传递给MatlabEngine.connectMatlab
或MatlabEngine.connectMatlabAsync
静态方法。这些方法将Java引擎连接到共享会话。
如果您在调用时没有指定共享MATLAB会话的名称MatlabEngine.connectMatlab
或MatlabEngine.connectMatlabAsync
,该引擎使用第一个共享的MATLAB会话创建。如果没有可用的共享MATLAB会话,引擎创建一个共享MATLAB会话并连接到这个会话。
有关这些方法的描述,请参见com.mathworks.engine.MatlabEngine
通过调用将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.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 {FutureeFuture = 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.shareEngine
MATLAB函数。这样做就消除了使用的需要MatlabEngine.findMatlab
或MatlabEngine.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 ();} }