データ変換ルール
このトピックでは、MATLAB® Compiler™ のコンポーネントのデータ変換ルールを説明します。これらのコンポーネントは Automation と互換性のあるデータ型をサポートするデュアル インターフェイス Microsoft® COM オブジェクトです。
メモ
"Automation" (以前は OLE Automation と呼ばれた) はソフトウェア パッケージが固有の機能をスクリプト ツールやその他のアプリケーションに公開できるようにするテクノロジーです。Automation はコンポーネント オブジェクト モデル (COM) を使用しますが、インプレース アクティベーションなど他の OLE 機能とは独立して実装される場合があります。
MATLAB Compiler のコンポーネントでメソッドが呼び出されると、入力パラメーターは MATLAB 内部の配列形式に変換され、コンパイルされた MATLAB 関数に渡されます。関数が終了すると、出力パラメーターは MATLAB 内部の配列形式から COM オートメーション型に変換されます。
COM クライアントはコンパイルされた MATLAB 関数内のすべての入力引数と出力引数を VARIANT
型として渡します。COM VARIANT
型は複数の単純データ型の共用体です。VARIANT
型変数は、任意の単純型の変数およびそれら任意の値の配列を格納することができます。
Win32 アプリケーション プログラム インターフェイス (API) は C/C++ で VARIANT
を作成し操作する関数を多数提供し、Visual Basic® はこの型のネイティブ言語サポートを提供します。
メモ
このデータの説明は VARIANT
データ型と Variant
データ型の両方に該当します。VARIANT
は C++ での名前であり、Variant
は Visual Basic での対応するデータ型です。
COM VARIANT
の定義と API サポートについては、Visual Studio® ドキュメンテーションを参照してください。VARIANT
変数は自己記述型で、その型のコードを構造体の内部フィールドとして格納します。
以下の表は、MATLAB Compiler のコンポーネントによってサポートされている VARIANT
型コードをリストしています。
サポートされる VARIANT 型コード
VARIANT 型コード(C/C++) | C/C++ の型 | Variant 型コード(Visual Basic) | Visual Basic の型 | 定義 |
---|---|---|---|---|
VT_EMPTY | — | vbEmpty | — | 初期化されていない |
VT_I1 | char | — | — | 符号付き 1 バイト文字 |
VT_UI1 | 符号なし | vbByte | Byte | 符号なし 1 バイト文字 |
VT_I2 | short | vbInteger | Integer | 符号付き 2 バイト整数 |
VT_UI2 | unsigned short | — | — | 符号なし 2 バイト整数 |
VT_I4 | long | vbLong | Long | 符号付き 4 バイト整数 |
VT_UI4 | unsigned long | — | — | 符号なし 4 バイト整数 |
VT_R4 | float | vbSingle | Single | IEEE® 4 バイト浮動小数点値 |
VT_R8 | double | vbDouble | Double | IEEE 8 バイト浮動小数点値 |
VT_CY | CY + | vbCurrency | Currency | 通貨値 (64 ビット整数、10,000 でスケーリング) |
VT_BSTR | BSTR + | vbString | String | 文字列値 |
VT_ERROR | SCODE + | vbError | — |
|
VT_DATE | DATE + | vbDate | Date | 日付と時刻を表す 8 バイト浮動小数点値 |
VT_INT | int | — | — | 符号付き整数、 |
VT_UINT | unsigned int | — | — | 符号なし整数、 |
VT_DECIMAL | DECIMAL + | vbDecimal | — | 96 ビット (12 バイト) 符号なし整数、10 のべき乗の変数でスケーリング |
VT_BOOL | VARIANT_BOOL + | vbBoolean | Boolean | 2 バイトのブール値 (0xFFFF = True、0x0000 = False) |
VT_DISPATCH | IDispatch* | vbObject | Object | オブジェクトへの |
VT_VARIANT | VARIANT + | vbVariant | Variant |
|
<"任意">|VT_ARRAY | — | — | — | 配列として宣言するために |
<"任意">|VT_BYREF | — | — | — | 値への参照として宣言するため |
+ は Windows 固有の型を表します。標準 C/C++ の一部ではありません。 |
以下の表は MATLAB から COM への変換ルールをリストしています。
MATLAB から COM VARIANT への変換ルール
MATLAB データ型 | スカラー データの VARIANT 型 | 配列データの VARIANT 型 | コメント |
---|---|---|---|
cell | 1 行 1 列の cell 配列はセル内容の MATLAB データ型の変換ルールに準拠した型をもつ単一の | 多次元 cell 配列は、各配列メンバーの型が対応するセルの MATLAB データ型の変換ルールに準拠する、 | |
structure |
|
| MATLAB |
char | 1 行 1 列の | 1 行 L 列の | 文字ベクトルの配列は |
sparse |
|
| MATLAB スパース配列は |
double | 実数で 1 行 1 列の double 行列は | 実数で多次元の double 行列は | 複素数配列は |
single | 実数で 1 行 1 列の single 行列は | 実数で多次元の single 行列は | 複素数配列は |
int8 | 実数で 1 行 1 列の | 実数で多次元の | 複素数配列は |
uint8 | 実数で 1 行 1 列の | 実数で多次元の | 複素数配列は |
int16 | 実数で 1 行 1 列の | 実数で多次元の | 複素数配列は |
uint16 | 実数で 1 行 1 列の | 実数で多次元の | 複素数配列は |
int32 | 1 行 1 列の | 多次元の | 複素数配列は |
uint32 | 1 行 1 列の | 多次元の | 複素数配列は |
関数ハンドル |
|
| サポートされていません |
Java® クラス |
|
| サポートされていません |
ユーザー クラス |
|
| サポートされていません |
logical |
|
|
以下の表では COM から MATLAB への変換ルールをリストしています。
COM VARIANT から MATLAB への変換ルール
VARIANT 型 | MATLAB データ型 (スカラーまたは配列データ) | コメント |
---|---|---|
VT_EMPTY | 該当なし | 空配列が作成されます。 |
VT_I1 | int8 | |
VT_UI1 | uint8 | |
VT_I2 | int16 | |
VT_UI2 | uint16 | |
VT_I4 | int32 | |
VT_UI4 | uint32 | |
VT_R4 | single | |
VT_R8 | double | |
VT_CY | double | |
VT_BSTR | char |
|
VT_ERROR | int32 | |
VT_DATE | double | 1. |
VT_INT | int32 | |
VT_UINT | uint32 | |
VT_DECIMAL | double | |
VT_BOOL | logical | |
VT_DISPATCH | ("場合により異なる") |
現在、Excel® の |
<"任意">|VT_BYREF | ("場合により異なる") | 任意の基本型へのポインターは、指し示す先のルールに従って処理されます。結果の MATLAB 配列には値のディープ コピーが含まれます。 |
<"任意">|VT_ARRAY | ("場合により異なる") | 多次元の |