.NET と MATLAB の間のデータ変換のルール
メモ
以下の表にリストされた変換ルールは、リストされたネイティブ型のスカラー、ベクトル、行列、および多次元配列に適用されます。
マネージ .NET 型から MATLAB 配列
次の表に、ネイティブの .NET 型を MATLAB® 配列に変換するときに使用されるデータ変換ルールを示します。
変換ルール: マネージ型から MATLAB 配列
| ネイティブの .NET 型 | MATLAB 配列 | コメント |
|---|---|---|
|
| — |
|
| コンストラクターの引数 |
|
| |
|
| |
|
| |
|
| |
|
| なし |
|
| なし |
MATLAB 配列からマネージ .NET 型
次の表に、MATLAB 配列をネイティブの .NET 型に変換するときに使用されるデータ変換ルールを示します。
変換ルール: MATLAB 配列からマネージ型
MATLAB 型 | .NET 型 (プリミティブ型) | .NET 型 (クラス) | コメント |
|---|---|---|---|
| N/A |
| cell 配列と struct 配列には、対応する .NET 型はありません。 |
| N/A |
| |
|
|
| |
|
|
| 既定では double 型になります。 |
|
|
| |
|
|
| 対応する符号なしの型への変換はサポートされていません。 |
|
|
| 対応する符号なしの型への変換はサポートされていません。 |
|
|
| 対応する符号なしの型への変換はサポートされていません。 |
|
|
| なし |
|
|
| なし |
関数ハンドル | 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 型 |
|---|---|
| numeric |
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| スカラーの .NET struct | .NET struct の |
.NET struct [ N ] | 各要素が .NET struct の |
.NET struct [ | 各要素が .NET struct の |
native.MWStructArray | struct |
native.MWCellArray | cell |
Hashtable | struct |
| struct |
ArrayList | cell |
| 既定のアプリケーション ドメイン内の他の任意の .NET 型 | .NET オブジェクト |
| 既定以外のアプリケーション ドメイン内の他の任意のシリアル化可能な .NET 型 | .NET オブジェクト |
変換ルール: MATLAB 数値型から .NET 型
| 変換する MATLAB 型: | 変換先: | 適用されるルール: |
|---|---|---|
numeric | スカラー | MATLAB の型はスカラーでなければなりません。たとえば、MATLAB の 1 行 1 列の |
| ベクトル | MATLAB の型はベクトルでなければなりません。たとえば、MATLAB の 1 行 | |
次元配列 | ユーザーが指定する |
ヒント
MATLAB numeric 配列を変換するときは、拡張変換が可能です。たとえば、int を double に変換できます。指定する型は、対象の型と幅が等しいかそれよりも広い数値型でなければなりません。縮小変換に対しては ArgumentException がスローされます。
注意
.NET 型は MATLAB 型ほど柔軟でありません。データをアプリケーションに統合する前に、.NET の出力に注意して適切にテストしてください。
変換ルール: MATLAB char 配列から .NET 型
| 変換する MATLAB 型: | 変換先: | 適用されるルール: |
|---|---|---|
char | Char | char はスカラーでなければなりません。 |
Char 配列 |
| |
String | MATLAB | |
String 配列 |
|
変換ルール: MATLAB logical 配列から .NET 型
| 変換する MATLAB 型: | 変換先: | 適用されるルール: |
|---|---|---|
logical | Boolean | logical はスカラーでなければなりません。 |
Boolean[] | MATLAB | |
Boolean 配列 |
|
変換ルール: cell 配列から .NET 型
| 変換する MATLAB 型: | 変換先: | 適用されるルール: |
|---|---|---|
cell | System.Array |
|
ArrayList | MATLAB cell 配列はベクトルでなければなりません。 |
注意
MATLAB cell 配列に struct が格納されている場合、その部分は変更されません。その他の型はすべてネイティブ型に変換されます。入れ子にされた cell 配列は、次のコード スニペットに示すように、cell 配列の次元と一致する System.Array に変換されます。
Let C = {[1,2,3], {[1,2,3]},'Hello world'}
% be a cell
C は object[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 | スカラーの |
変換ルール: MATLAB の .NET オブジェクトから .NET ネイティブ オブジェクト
| 変換する MATLAB 型: | 変換先: | 適用されるルール: |
|---|---|---|
| .NET オブジェクト | オブジェクトを格納するタイプまたはスーパータイプ | MATLAB の .NET オブジェクトはタイプまたはスーパータイプにのみ変換できます。 |
文字および string の変換
ネイティブの .NET string は、1 行 N 列の MATLAB 文字配列に変換されます。N は .NET string の長さと等しくなります。
.NET string の配列 (string[]) は、M 行 N 列の文字配列に変換されます。M は string ([]) 配列の要素数と等しくなり、N は配列内の string の最大長と等しくなります。
より高次元の String の配列も同様に変換されます。
一般に、N 次元の String の配列は N+1 次元の MATLAB 文字配列に変換され、提供された string の長さが異なる場合は適切にゼロ パディングされます。
サポートされていない MATLAB 配列型
MATLAB Compiler SDK 製品では、次の MATLAB 配列型は CLS 準拠でないため、これらを返すことはサポートされていません。
int8uint16uint32uint64
ただし、これらの型を MATLAB Compiler SDK コンポーネントに引数として渡すことは可能です。