主要内容

生成コ,ドの型へのMATLAB型のマッピング

コ,ドジェネレ,タ,は,matlab®コドで使用するデタ型に対応するc / c++のデタ型を生成します。生成されるデタ型はタゲットプラットフォムとコンパラに依存します。コ,ドジェネレ,タ,は,組み込みのcデ,タ型(intなど),またはcの类型定义ステ,トメントを使用して定義されるカスタムデ,タ型のいずれかを生成できます。既定では,コードジェネレーターはスタンドアロンコード(自由,dllまたはexe)に対しては組み込みデータ型,墨西哥人コードに対してはカスタムデータ型を生成します。組み込みのcの型を使用するには,コ,ド生成構成オブジェクトのDataTypeReplacementプロパティを変更するか,MATLAB编码器™アプリを使用します。詳細にいては,生成コ,ドで使用されるデ,タ型の指定を参照してください。

カスタムc / c++型を生成するために,コドジェネレタは,fullfile (matlabroot“外来的”,“包括”)に配置されているヘッダファルtmwtypes.hの事前定義されたデ,タ型を使用します。コードジェネレーターは,MATLABコードの解析に基づいてカスタムデータ型を生成することもできます。カスタムデタ型は,コド生成ディレクトリに配置されているファルrtwtypes.hmyFunction_types.hで定義されます。myFunctionは最上位の関数の名前です。コードジェネレーターは,MATLAB内に存在するすべてのデータ型に対してコードを生成できるわけではありません。C/ c++コ,ド生成でサポ,トされているmatlab言語機能を参照してください。

組み込みのcデタ型を使用しないときは,コドジェネレタは以下のデタ型を生成します。

Matlabデ,タ型 対応するカスタムc / c++デタ型
逻辑 boolean_T
字符 char_T
字符串 rtString
int8 int8_T
int16 int16_T
int32 int32_T
int64 int64_T
uint8 uint8_T
uint16 uint16_T
uint32 uint32_T
uint64 uint64_T
real32_T
real_T
复杂的 複素数型を参照してください。
结构体 構造体の型を参照してください。
fi 固定小数点型を参照してください。

変数が参照渡しされるとき,対応するカスタムデ,タ型は逆参照演算子を使用します。たとえば,参照渡しされる際のint8の対応するカスタムc / c++デタ型はint8_T *です。

動的に割り当てられた配列はカスタムemxArray_型にマッピングされます。たとえば,動的に割り当てられた字符配列はemxArray_char_Tの型にマッピングされます。動的に割り当てられた双配列はemxArray_real_T型にマッピングされます。動的な割り当ては,たとえばコンパcoder.varsizeを使用して可変サ@ @ズの配列を作成する場合に発生します。可変サ化学键ズ配列の詳細に化学键いては,生成された関数▪▪ンタ▪フェ▪▪スでのc配列の使用を参照してください。

複素数型

Matlabでは,実数/複素数はデ,タ型のプロパティとして定義されます。次の表に,コードジェネレーターがMATLABの複素数データ型に対して使用する事前定義されたデータ型を示します。

Matlabの複素数デ,タ型 対応するカスタムc / c++デタ型
int8 cint8_T
int16 cint16_T
int32 cint32_T
int64 cint64_T
uint8 cuint8_T
uint16 cuint16_T
uint32 cuint32_T
uint64 cuint64_T
creal32_T
creal_T

コ,ドジェネレ,タ,は,各複素数値を,実数部再保险と虚数部即时通讯をも構造体として定義します。例として,tmwtypes.hからのcreal32_T类型定义を参照してください。

typedef struct {real32_T re;/*实组件*/ real32_T im;/*虚组件*/}creal32_T;
creal32_T型の変数xを定義するとします。生成されたコ,ドは,実数部をx.reとして,虚数部をx.imとしてアクセスします。

C/ c++ラ▪▪ブラリが異なる表現を必要とする場合,たとえばcoder.cstructnameを使用して,MATLAB编码器の複素数型の独自バ,ジョンを定義することができます。ただし,定義において実数部には再保险,虚数部には即时通讯という名前を使用しなければなりません。

詳細にいては,複素数デ,タのコ,ド生成を参照してください。

構造体の型

MATLAB编码器は,構造体をフィ,ルド単位でc / c++の型にマッピングします。Matlab定義での構造体フィ,ルドの順序が保持されます。生成されるc / c++構造体の型の名前を制御するか,定義を指定するには,関数coder.cstructnameを使用します。動的メモリ割り当てを使用しない場合は,構造体内の配列は1次元の配列に変換され,ポインターには変換されません。詳細にいては,構造体を参照してください。

固定小数点型

C/ c++デ,タ型はfiオブジェクトのnumerictypeプロパティによって決定されます。既定では,コドジェネレタは組み込みのc / c++型の使用を試みます。ただし,カスタムc / c++デ,タ型を代わりに使用するよう選択することもできます。次の表は,SignednessおよびFractionLengthの各プロパティがどのようにカスタムc / c++デタ型を決定するかを示しています。カスタムC / c++データ型は,ワードサイズに基づいて,固定小数点の値を格納できる一段大きいターゲットワードサイズとなります。整数型の符号は,固定小数点型の符号と一致します。

符号属性 語長 小数部の長さ 対応するカスタムc / c++デタ型
1 8 7 int8_T
1 13 10 int16_T
1 16 15 int16_T
0 19 15 uint32_T

文字ベクトル

MATLAB编码器ソフトウェアは,matlab文字ベクトルをc / c++文字配列にマッピングします。これらの文字配列は,空で終了しないためC/ c++文字列ではありません。MATLAB文字ベクトルを、C/C++ 文字列を必要とする外部 C/C++ コードに渡す場合、生成される C/C++ 文字配列は null で終了しなければなりません。null で終了する C/C++ 文字配列を生成するには、MATLAB 文字ベクトルの終わりに 0 を追加します。たとえば、['示例文本' 0]とします。これをしないと,文字列を想定している生成コードの動作がコンパイラエラーや警告なしに停止する可能性があります。

マルチワ,ドの型

マルチワードの型は,ターゲットハードウェアがMATLABデータ型を組み込みのC / c++型に格納できないときに生成されるカスタム型です。マルチワ,ドの型は,整数の配列を含むc / c++構造体型として生成されます。配列の次元は、タ、ゲットハ、ドウェアの最も幅広の整数型のサ、ズに依存します。

128年たとえばビットの固定小数点型の場合,ターゲットハードウェアの最も幅広の整数型が32ビットであれば,ソフトウェアは4つの32ビット整数からなる配列を1つ含む構造体を生成します。

Typedef struct {unsigned int chunk [4];} uint128m_T;

タゲットハドウェアの最も幅広の整数型が64ビットのサズをもであれば,コードジェネレーターは2つの64ビット長の型からなる配列を1つ含む構造体を生成します。

类型定义struct {unsigned long chunks[2];} uint128m_T;

64年ビットの整数MATLAB型から生成されるC / c++データ型は,ターゲットハードウェアでの整数型のサイズに依存します。64ビットを格納するのに十分な幅をも組み込み型が存在しない場合,64ビットのMATLAB编码器型はカスタムマルチワ,ド型にマッピングされます。

参考

|

関連するトピック