このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
.NET アプリケーションでの MATLAB データの処理
引数を返す MATLAB® 関数を呼び出すと、エンジンは、変数に指定した型に従って MATLAB データを変換しようとします。変換が失敗すると、エンジンは System.InvalidCastException
をスローします。
次の表は、エンジンがどのように MATLAB データ型を .NET データ型にマッピングするかを示しています。サイズ マッピングの詳細については、MATLAB 配列から .NET 配列への変換を参照してください。
.NET での MATLAB 数値型
MATLAB データ型 | サポートされている .NET データ型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
複素数の |
|
|
|
| MathWorks.MATLAB.Types.MATLABStruct MathWorks.MATLAB.Types.MATLABStruct[] MathWorks.MATLAB.Types.MATLABStruct[,,...] |
この表内のすべての型 |
|
定数 | サポートされている .NET データ型 |
---|---|
| System.Double.NaN |
| System.Single.NaN |
| System.Double.PositiveInfinity |
| System.Single.PositiveInfinity |
| System.Double.NegativeInfinity |
| System.Single.NegativeInfinity |
.NET での MATLAB string 型および文字型
MATLAB データ型 | サポートされている .NET データ型 |
---|---|
|
|
|
|
| ヌルの |
MATLAB 配列から .NET 配列への変換
.NET 配列の次元は、配列の要素へのアクセスに必要な添字の数です。次元の数を取得するには、.NET System.Array
型の Rank
プロパティを使用します。MATLAB 配列の次元数は、配列内の大きさが 1 でない次元の数です。
MATLAB は、MATLAB 配列の次元数が想定される次元数以下である限り、配列の次元数を .NET メソッド シグネチャに一致させます。たとえば、スカラー入力を、2 次元配列を想定するメソッドに渡すことができます。
次元数が N
である MATLAB 配列において、.NET 配列の次元数が N
より少ない場合、MATLAB 変換において大きさが 1 の次元が、最初のものから残りの次元数が .NET 配列の次元数と一致するまで削除されます。
最初の次元を削除しても MATLAB 配列のランクが .NET 配列よりも大きい場合、MATLAB は System.InvalidCastException
をスローします。
System.Array
のサポート
すべての MATLAB の型は System.Array
変数に代入できます。結果の配列は MATLAB 配列と同じ次元をもち、等価の基となる型をもちます。
.NET での MATLAB オブジェクトおよび cell 配列
.NET エンジンは、MATLAB ハンドルおよび値オブジェクトと cell 配列の要素を MathWorks.MATLAB.Types.MATLABObject
型または System.Array
型に変換します。MATLABObject
型は opaque 型です。これらのオブジェクトは、その処理方法を認識している MATLAB 関数に渡すことができますが、プログラムではオブジェクトのプロパティおよびメソッドに直接アクセスできません。
オブジェクト データ メンバーへのアクセスを提供するために、エンジンでは、C# アプリケーションでの dynamic
型がサポートされています。たとえば、次のコードでは UserData
プロパティにアクセスして MATLAB Figure オブジェクトで disp
メソッドを呼び出すことができます。
dynamic fig = eng.figure(); fig.UserData = 3.14; fig.disp( new RunOptions(nargout:0) );
次のコードは、MATLAB cell 配列の要素にアクセスする方法を示しています。ネイティブ .NET 型を取得するために適切な型を明示的に宣言する必要があります。
dynamic[ ] values = eng.eval(" { 3.14, 'Hello', uint8(42) } "); double e1 = values[0]; string e2 = values[1]; byte e3 = values[2];
動的な型指定のメリットについては、dynamic 型の使用や動的言語ランタイムの概要などの Microsoft® のドキュメンテーションを参照してください。これらの機能は、.NET Framework や .NET Core など、C# 4 をサポートしているすべてのプラットフォームで使用可能です。