Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

.NET アプリケーションでの MATLAB データの処理

引数を返す MATLAB® 関数を呼び出すと、エンジンは、変数に指定した型に従って MATLAB データを変換しようとします。変換が失敗すると、エンジンは System.InvalidCastException をスローします。

次の表は、エンジンがどのように MATLAB データ型を .NET データ型にマッピングするかを示しています。サイズ マッピングの詳細については、MATLAB 配列から .NET 配列への変換を参照してください。

.NET での MATLAB 数値型

MATLAB データ型

サポートされている .NET データ型

double

System.Double
System.Double[]
System.Double[,,...]

single

System.Single
System.Single[]
System.Single[,,...]

int8

System.SByte
System.SByte[]
System.SByte[,,...]

uint8

System.Byte
System.Byte[]
System.Byte[,,...]

int16

System.Int16
System.Int16[]
System.Int16[,,...]

uint16

System.UInt16
System.UInt16[]
System.UInt16[,,...]

int32

System.Int32
System.Int32[]
System.Int32[,,...]

uint32

System.UInt32
System.UInt32[]
System.UInt32[,,...]

int64

System.Int64
System.Int64[]
System.Int64[,,...]

uint64

System.UInt64
System.UInt64[]
System.UInt64[,,...]

複素数の double

Numerics.Complex
Numerics.Complex[]
Numerics.Complex[,,...]

logical

System.Boolean
System.Boolean[]
System.Boolean[,,...]

struct

MathWorks.MATLAB.Types.MATLABStruct
MathWorks.MATLAB.Types.MATLABStruct[]
MathWorks.MATLAB.Types.MATLABStruct[,,...]

この表内のすべての型

System.Nullable<T> (この表内の型 T)

定数

サポートされている .NET データ型

NaN("double") の結果

System.Double.NaN

NaN("single") の結果

System.Single.NaN

Inf("double") の結果

System.Double.PositiveInfinity

Inf("single") の結果

System.Single.PositiveInfinity

-Inf("double") の結果

System.Double.NegativeInfinity

-Inf("single") の結果

System.Single.NegativeInfinity

.NET での MATLAB string 型および文字型

MATLAB データ型

サポートされている .NET データ型

string

System.String
System.String[]
System.String[,,...]

char

System.String
System.String[]
System.String[,,...]
System.Char
System.Char[]
System.Char[,,...]
System.Nullable<char> (すべての次元)

string<missing>

ヌルの System.String

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 をサポートしているすべてのプラットフォームで使用可能です。

関連するトピック