このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
.NET からの MATLAB 関数の実行
.NET から MATLAB® 関数を呼び出すときに、.NET 変数を関数に渡すことができます。MATLAB 関数が出力変数を返す場合、エンジンがその値を MATLAB から .NET に変換します。
.NET エンジン プログラムを設定およびビルドする方法の詳細については、.NET 開発環境のテストを参照してください。
.NET から MATLAB への変数の引き渡し
この例では、MATLAB 関数 linspace
を使用して 1 次元 double 配列を作成し、reshape
を使用して要素の形状を変更します。.NET から MATLAB へのデータの変換の詳細については、MATLAB 関数への .NET データ型の受け渡しを参照してください。
この例の MATLAB コードは、次のとおりです。
A = linspace(-5.0,5.0); sz = [25,4]; B = reshape(A,sz);
この例の C# コードは、次のとおりです。
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 matlab = MATLABEngine.StartMATLAB()) { Console.WriteLine("done."); double[] A = matlab.linspace(-5.0,5.0); int[] sz = new int[] {25,4}; double[,] B = matlab.reshape(A,sz); } // Call when you no longer need MATLAB Engine in your application. MATLABEngine.TerminateEngineClient(); } } }
MATLAB から .NET への変数の引き渡し
関数 MATLABmagic
は、double 型の 2 次元の行列を返します。エンジンは、返された MATLAB 2 次元 double 行列を、double[,]
として宣言される .NET 変数 dbls
に変換します。これにより、.NET プログラム内で dbls
を使用できるようになります。MATLAB から .NET へのデータの変換の詳細については、.NET アプリケーションでの MATLAB データの処理を参照してください。
この例の C# コードは、次のとおりです。
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 matlab = MATLABEngine.StartMATLAB()) { Console.WriteLine("done."); double[,] dbls = matlab.magic(3.0); matlab.disp(new RunOptions(nargout: 0), dbls); } // Call when you no longer need MATLAB Engine in your application. MATLABEngine.TerminateEngineClient(); } } }
このコードでは、変数 dbls
が double の 2 次元行列として定義されています。代替のサイズ定義は次のとおりです。
double[,] dbls = matlab.magic(3.0); // 3x3 double[,,] dbls = matlab.magic(3.0); // 3x3x1 Array dbls = matlab.magic(3.0); // 3x3
次のコードは、数値 3.0
を表すサイズ定義を示しています。
double x = matlab.eval(" 3.0 "); // double scalar double[] y = matlab.eval(" 3.0 "); // double array, length 1 double[,,,] z = matlab.eval(" 3.0 "); // 1x1x1x1 Array q = matlab.eval(" 3.0 "); // 1x1
参考
MathWorks.MATLAB.Engine.MATLABEngine