実行中の MATLAB セッションへの Java の接続
MATLAB の検索と接続
ローカル マシンで実行中の共有 MATLAB® セッションに Java® エンジンを接続することができます。共有 MATLAB セッションに接続するには、以下を実行します。
MATLAB を共有エンジン セッションとして起動するか、
matlab.engine.shareEngine
を使用して実行中の MATLAB プロセスを共有にします。MatlabEngine.findMatlab
またはMatlabEngine.findMatlabAsync
静的メソッドを使用して、MATLAB 共有セッションの名前を検索します。共有 MATLAB セッションの名前が含まれる文字列を
MatlabEngine.connectMatlab
またはMatlabEngine.connectMatlabAsync
静的メソッドに渡します。これらのメソッドにより、Java エンジンが共有セッションに接続されます。
MatlabEngine.connectMatlab
や MatlabEngine.connectMatlabAsync
を呼び出す際に共有 MATLAB セッションの名前を指定しない場合、エンジンは最初に作成された MATLAB セッションを使用します。使用可能な共有 MATLAB セッションがない場合、エンジンは共有 MATLAB セッションを作成し、このセッションに接続します。
これらのメソッドについては、com.mathworks.engine.MatlabEngine
を参照してください。
MATLAB への同期的な接続
MATLAB から matlab.engine.shareEngine
を呼び出して、MATLAB セッションを共有セッションに変換します。
matlab.engine.shareEngine
セッションを検索し、Java から同期的に接続します。
import com.mathworks.engine.*; public class javaFindConnect { public static void main(String[] args) throws Exception { String[] engines = MatlabEngine.findMatlab(); MatlabEngine eng = MatlabEngine.connectMatlab(engines[0]); // Execute command on shared MATLAB session eng.eval("plot(1:10); print('myPlot','-djpeg')"); eng.close(); } }
MATLAB への非同期的な接続
MATLAB から matlab.engine.shareEngine
を呼び出して、MATLAB セッションを共有セッションに変換します。
matlab.engine.shareEngine
セッションを検索し、Java から非同期的に接続します。
import com.mathworks.engine.*; import java.util.concurrent.Future; public class javaFindConnectAsync { public static void main(String[] args) throws Exception { Future<String[]> eFuture = MatlabEngine.findMatlabAsync(); String[] engines = eFuture.get(); Future<MatlabEngine> engFuture = MatlabEngine.connectMatlabAsync(engines[0]); // Work on other thread MatlabEngine eng = engFuture.get(); // Execute command on shared MATLAB session Future<Void> vFuture = eng.evalAsync("plot(1:10); print('myPlot','-djpeg')"); eng.close(); } }
共有セッションの名前の指定
MATLAB 関数 matlab.engine.shareEngine
の実行時に、共有 MATLAB セッションの名前を指定することができます。これにより、MatlabEngine.findMatlab
や MatlabEngine.findMatlabAsync
を使用して名前を検索する必要がなくなります。
たとえば、MATLAB を起動して、共有セッションに myMatlabEngine
という名前を指定します。
matlab -r "matlab.engine.shareEngine('myMatlabEngine')"
Java からこの名前の付いた MATLAB セッションに接続します。
import com.mathworks.engine.*; public class javaNameConnect { public static void main(String[] args) throws Exception { String[] myEngine = {"myMatlabEngine"}; MatlabEngine eng = MatlabEngine.connectMatlab(myEngine[0]); // Execute command on shared MATLAB session eng.eval("plot(1:10); print('myPlot','-djpeg')"); eng.close(); } }