您可以连接Java®引擎共享MATLAB®在本地机器上运行的会话。连接到共享的MATLAB会话:
以共享引擎会话的形式启动MATLAB,或者共享正在运行的MATLAB进程matlab.eengine.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.eengine.Shareengine.
从MATLAB。
matlab.eengine.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 session上执行命令eng.eval("plot(1:10);打印(‘myPlot’,‘-djpeg’)”);eng.close ();}}
通过调用将MATLAB会话转换为共享会话matlab.eengine.Shareengine.
从MATLAB。
matlab.eengine.Shareengine.
从Java中找到会话并异步连接。
进口com.mathworks.engine。*;进口java.util.concurrent.Future;public class javaFindConnectAsync {public static void main(String[] args) throws Exception {FutureeFuture = MatlabEngine.findMatlabAsync();String[] engines = eFuture.get();Future engFuture = MatlabEngine. connectmatlabasync (engines[0]);//在其他线程上工作MatlabEngine eng = engFuture.get();//在共享MATLAB会话Future上执行命令 vFuture = eng.evalAsync("plot(1:10);打印(‘myPlot’,‘-djpeg’)”);eng.close ();}}
控件时可以指定共享MATLAB会话的名称matlab.eengine.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 session上执行命令eng.eval("plot(1:10);打印(‘myPlot’,‘-djpeg’)”);eng.close ();}}