.NET からの MATLAB セッションの開始
.NET エンジン プログラムを設定およびビルドする方法の詳細については、.NET 開発環境のテストを参照してください。
MATLAB® セッションを .NET プログラムから同期的または非同期的に開始することができます。次の MathWorks.MATLAB.Engine.MATLABEngine
メソッドを使用して MATLAB を開始できます。
StartMATLAB
— MATLAB セッションを同期的に開始します。StartMATLABAsync
— MATLAB セッションを非同期的に開始します。
MATLAB セッションは、常に TerminateEngineClient
メソッドを使用して終了しなければなりません。
以下には using
ステートメントを追加します。
MathWorks.MATLAB.Engine
MathWorks.MATLAB.Types
MathWorks.MATLAB.Exceptions
-nosplash
オプションを指定した MATLAB の起動
MATLAB を起動し、開始メッセージおよび終了メッセージを表示します。
using MathWorks.MATLAB.Engine; using MathWorks.MATLAB.Exceptions; using MathWorks.MATLAB.Types; using System; namespace MathWorks.MATLAB.Engine.ConsoleExamples { public class Program { public static void Main(string[] args) { Console.Write("Starting MATLAB... "); using (dynamic eng = MATLABEngine.StartMATLAB("-nosplash")) { Console.WriteLine("done."); eng.disp(new RunOptions(nargout: 0), "Hello. Closing MATLAB..."); } // Call when you no longer need MATLAB Engine in your application. MATLABEngine.TerminateEngineClient(); Console.WriteLine("done."); } } }
2 つの MATLAB セッションの非同期的開始
2 つの MATLAB セッションを非同期的に開始し、それらが開始するのを待機してから続行します。
using MathWorks.MATLAB.Engine; using MathWorks.MATLAB.Exceptions; using MathWorks.MATLAB.Types; using System.Threading; using System.Threading.Tasks; using System; namespace MathWorks.MATLAB.Engine.ConsoleExamples { public class Program { public static async Task Main(string[] args) { // StartMATLABAsync Task<MATLABEngine> startMatlab1 = MATLABEngine.StartMATLABAsync(); Task<MATLABEngine> startMatlab2 = MATLABEngine.StartMATLABAsync(); Console.WriteLine("Two MATLAB sessions are starting in the background."); Console.WriteLine("Wait for both to start before continuing."); await Task.WhenAll(startMatlab1, startMatlab2); Console.WriteLine("Two MATLAB sessions started."); MATLABEngine.TerminateEngineClient(); } } }
参考
MathWorks.MATLAB.Engine.MATLABEngine