Main Content

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

.NET と MATLAB の間のデータ変換のルール

メモ

以下の表にリストされた変換ルールは、リストされたネイティブ型のスカラー、ベクトル、行列、および多次元配列に適用されます。

マネージ .NET 型から MATLAB 配列

次の表に、ネイティブの .NET 型を MATLAB® 配列に変換するときに使用されるデータ変換ルールを示します。

変換ルール: マネージ型から MATLAB 配列

ネイティブの .NET 型MATLAB 配列コメント

System.Double

double

System.Single

single

コンストラクターの引数 makeDoublefalse に設定されている場合のみ使用できます。既定では true であり、MATLAB double 型が作成されます。

System.Int64

int64

System.Int32

int32

System.Int16

int16

System.Byte

int8

System.String

char

なし

System.Boolean

logical

なし

MATLAB 配列からマネージ .NET 型

次の表に、MATLAB 配列をネイティブの .NET 型に変換するときに使用されるデータ変換ルールを示します。

変換ルール: MATLAB 配列からマネージ型

MATLAB 型

.NET 型 (プリミティブ型)

.NET 型 (クラス)

コメント

cell

N/A

MWCellArray

cell 配列と struct 配列には、対応する .NET 型はありません。

structure

N/A

MWStructArray

char

System.String

MWCharArray

double

System.Double

MWNumericArray

既定では double 型になります。

single

System.Single

MWNumericArray

uint64

System.Int64

MWNumericArray

対応する符号なしの型への変換はサポートされていません。

uint32

System.Int32

MWNumericArray

対応する符号なしの型への変換はサポートされていません。

uint16

System.Int16

MWNumericArray

対応する符号なしの型への変換はサポートされていません。

uint8

System.Byte

MWNumericArray

なし

logical

System.Boolean

MWLogicalArray

なし

関数ハンドル

N/A

N/A

なし

オブジェクト

N/A

N/A

なし

.NET 型から MATLAB

MATLAB Compiler SDK™ で生成されるコンポーネントのタイプ セーフな API を記述する .NET インターフェイスを作成するには、入力パラメーターと出力パラメーターに使用する .NET 型を決めなければなりません。

入力の型を選ぶときは、.NET の入力がどのような MATLAB 型になるかを考えます。出力の型を選ぶときは、その逆の変換を考えます。

以下の表に、.NET 型を MATLAB 配列に変換する場合と MATLAB 配列を .NET 型に変換する場合について、データ変換の結果と使用されるルールを示します。

メモ

無効な変換に対しては ArgumentException がスローされます。

変換結果: .NET 型から MATLAB

.NET 型

変換後の MATLAB 型

NumericType

  • System.Double

  • System.Single

  • System.Byte

  • System.Int16

  • System.Int32

  • System.Int64

  • System.Int64

numeric

System.Boolean

logical

System.Char

char

System.String

NumericType[N]

NumericType[1,N]

NumericType[Pn,..,P1,M,N]

NumericType[M,N,P1,..,Pn]

System.Boolean[N]

logical [1,N]

System.Boolean[Pn,..,P1,M,N]

logical [M,N,P1,..,Pn]

System.Char[N]

char [1,N]

System.Char[Pn,..,P1,M,N]

char [M,N,P1,..,Pn]

System.String[N]

char [N,max_string_length]

System.String[Pn,..,P1,N]

char [N,max_string_length, P1,..,Pn]

スカラーの .NET struct 
.NET struct [ N ]

各要素が .NET struct の public インスタンスのフィールドから構成される MATLAB struct [1,N]

.NET struct [ M,N ]

各要素が .NET struct の public インスタンスのフィールドから構成される MATLAB struct [ M,N ]

native.MWStructArray struct
native.MWCellArray cell
Hashtable struct

Dictionary <K,V> ここで K = string、V = スカラーまたは [Numeric, boolean, Char, String] の配列

struct
ArrayList cell
既定のアプリケーション ドメイン内の他の任意の .NET 型.NET オブジェクト
既定以外のアプリケーション ドメイン内の他の任意のシリアル化可能な .NET 型 .NET オブジェクト

変換ルール: MATLAB 数値型から .NET 型

変換する MATLAB 型:変換先:適用されるルール:
numericスカラー

MATLAB の型はスカラーでなければなりません。たとえば、MATLAB の 1 行 1 列の int です。

ベクトル

MATLAB の型はベクトルでなければなりません。たとえば、MATLAB の 1 行 N 列または N X 1 int 配列です。

N 次元配列

ユーザーが指定する N 次元の配列型は MATLAB numeric 配列のランクと一致しなければなりません。

ヒント

MATLAB numeric 配列を変換するときは、拡張変換が可能です。たとえば、intdouble に変換できます。指定する型は、対象の型と幅が等しいかそれよりも広い数値型でなければなりません。縮小変換に対しては ArgumentException がスローされます。

注意

.NET 型は MATLAB 型ほど柔軟でありません。データをアプリケーションに統合する前に、.NET の出力に注意して適切にテストしてください。

変換ルール: MATLAB char 配列から .NET 型

変換する MATLAB 型:変換先:適用されるルール:
charCharchar はスカラーでなければなりません。
Char 配列

N 次元の Char 型は MATLAB char 配列のランクと一致しなければなりません。

String

MATLAB char 配列は [1,N] でなければなりません。

String 配列

N 次元の MATLAB char 配列を (N-1) 次元の String 型の配列に変換できます。

変換ルール: MATLAB logical 配列から .NET 型

変換する MATLAB 型:変換先:適用されるルール:
logicalBooleanlogical はスカラーでなければなりません。
Boolean[]

MATLAB logical 配列は [1,N] または [N,1] でなければなりません。

Boolean 配列

N 次元の Boolean 配列は MATLAB logical 配列のランクと一致しなければなりません。

変換ルール: cell 配列から .NET 型

変換する MATLAB 型:変換先:適用されるルール:
cellSystem.Array

N 次元の MATLAB cell 配列は N 次元の object 型の System.Array に変換されます。

ArrayListMATLAB cell 配列はベクトルでなければなりません。

注意

MATLAB cell 配列に struct が格納されている場合、その部分は変更されません。その他の型はすべてネイティブ型に変換されます。入れ子にされた cell 配列は、次のコード スニペットに示すように、cell 配列の次元と一致する System.Array に変換されます。

Let C = {[1,2,3], {[1,2,3]},'Hello world'}
%  be a cell
Cobject[1,3] に変換できます。ここで、object[1,1]int[,] が格納され、object[1,2] に最初の要素が int[,] である object[1,1] が格納され、object[1,3]char[,] が格納されます。

メモ

入れ子にされた cell 配列は cell 配列の次元と一致する System.Array に変換されます。

変換ルール: struct から .NET 型

変換する MATLAB 型:変換先:適用されるルール:
struct.NET struct指定する .NET struct のパブリック フィールドの名前および数は MATLAB struct のフィールドの名前および数と一致しなければなりません。
Hashtable

スカラーの structHashtable に変換できます。入れ子にされた structHashtable に変換されます。入れ子にされた struct がスカラーでない場合は ArgumentException がスローされます。ディクショナリのキーは String 型でなければなりません。

変換ルール: MATLAB の .NET オブジェクトから .NET ネイティブ オブジェクト

変換する MATLAB 型:変換先:適用されるルール:
.NET オブジェクトオブジェクトを格納するタイプまたはスーパータイプMATLAB の .NET オブジェクトはタイプまたはスーパータイプにのみ変換できます。

文字および string の変換

ネイティブの .NET string は、1N 列の MATLAB 文字配列に変換されます。N は .NET string の長さと等しくなります。

.NET string の配列 (string[]) は、MN 列の文字配列に変換されます。M は string ([]) 配列の要素数と等しくなり、N は配列内の string の最大長と等しくなります。

より高次元の String の配列も同様に変換されます。

一般に、N 次元の String の配列は N+1 次元の MATLAB 文字配列に変換され、提供された string の長さが異なる場合は適切にゼロ パディングされます。

サポートされていない MATLAB 配列型

MATLAB Compiler SDK 製品では、次の MATLAB 配列型は CLS 準拠でないため、これらを返すことはサポートされていません。

  • int8

  • uint16

  • uint32

  • uint64

ただし、これらの型を MATLAB Compiler SDK コンポーネントに引数として渡すことは可能です。