実行中の 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