実行中の MATLAB セッションへの .NET アプリケーションの接続
MATLAB の検索と接続
ローカル マシンで実行中の共有 MATLAB® セッションに .NET エンジンを接続することができます。共有 MATLAB セッションに接続するには、以下を実行します。
MATLAB を共有エンジン セッションとして起動するか、
matlab.engine.shareEngine
を使用して実行中の MATLAB プロセスを共有にします。MATLABEngine.FindMATLAB
またはMATLABEngine.FindMATLABAsync
静的メソッドを使用して、MATLAB 共有セッションの名前を検索します。これらのメソッドについては、MathWorks.MATLAB.Engine.MATLABEngine
を参照してください。共有 MATLAB セッションの名前が含まれる文字列を
MATLABEngine.ConnectMATLAB
またはMATLABEngine.ConnectMATLABAsync
静的メソッドに渡します。これらのメソッドにより、エンジンが共有セッションに接続されます。
MATLABEngine.ConnectMATLAB
や MATLABEngine.ConnectMATLABAsync
を呼び出す際に共有 MATLAB セッションの名前を指定しない場合、エンジンは最初に作成された共有 MATLAB セッションを使用します。使用可能な共有 MATLAB セッションがない場合、エンジンは共有 MATLAB セッションを作成し、このセッションに接続します。
MATLAB への同期的な接続
MATLAB から matlab.engine.shareEngine
を呼び出して、MATLAB セッションを共有セッションに変換します。
matlab.engine.shareEngine
セッションを検索し、.NET から同期的に接続します。
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... "); string[] names = MATLABEngine.FindMATLAB(); if (names.Length == 0) Console.Error.WriteLine("No shared MATLAB sessions found."); string myMATLAB = names[0]; // Pick the first try { using (dynamic matlab = MATLABEngine.ConnectMATLAB(myMATLAB)) { matlab.disp(new RunOptions(nargout: 0), "Hello, shared MATLAB."); } } catch (MATLABNotAvailableException) { Console.Error.WriteLine("Could not connect to MATLAB engine."); } // Call when you no longer need MATLAB Engine in your application. MATLABEngine.TerminateEngineClient(); } } }
MATLAB への非同期的な接続
MATLAB から matlab.engine.shareEngine
を呼び出して、MATLAB セッションを共有セッションに変換します。
matlab.engine.shareEngine
セッションを検索し、非同期的に接続します。
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 { static async void Main(string[] args) { string[] names = await MATLABEngine.FindMATLABAsync(); if (names.Length == 0) Console.WriteLine("No MATLAB sessions available."); else { dynamic matlab = await MATLABEngine.ConnectMATLABAsync(names[0]); matlab.disp(new RunOptions(nargout: 0), "Hello, shared MATLAB."); } } } }
共有セッションの名前の指定
MATLAB 関数 matlab.engine.shareEngine
の実行時に、共有 MATLAB セッションの名前を指定することができます。そうすれば、MATLABEngine.FindMATLAB
や MATLABEngine.FindMATLABAsync
を使用して名前を検索する必要がなくなります。
たとえば、MATLAB を起動して、共有セッションに myMatlabEngine
という名前を指定します。
matlab -r "matlab.engine.shareEngine('myMatlabEngine')"
名前が付けられた MATLAB セッションに接続します。
using MathWorks.MATLAB.Types; using System; namespace MathWorks.MATLAB.Engine.ConsoleExamples { public class Program { public static void Main(string[] args) { using (dynamic matlab = MATLABEngine.ConnectMATLAB("myMatlabEngine")) { matlab.disp(new RunOptions(nargout: 0), "Hello, myMatlabEngine."); // Call when you no longer need MATLAB Engine in your application. MATLABEngine.TerminateEngineClient(); } } }
参考
matlab.engine.shareEngine
| MathWorks.MATLAB.Engine.MATLABEngine