データ型の変換
この例では、Data Type Conversion ブロックを使用してデータ型変換を作成する方法を示します。あるいは、Stateflow® チャートまたは MATLAB® Function ブロック内でデータ型の変換を実行することもできますが、効率が悪くなります。
C 構成要素
y1 = (double)u1;
データ型の変換のモデリング パターン — Simulink ブロック
データ型の変換を作成するには、[Simulink]、[Commonly Used Blocks ライブラリ] の Data Type Conversion ブロックを使用します。
1. モデル例 ex_data_type_SL を開きます。

2. Inport ブロックをクリックします。プロパティ インスペクターの [信号属性] で、[データ型] を int32 に指定します。
3. Data Type Conversion ブロックをクリックします。プロパティ インスペクターで [出力データ型] パラメーターを double に指定します。
4. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[キャスト モード] パラメーターを Explicit に設定します。既定では、Simulink® は、[キャスト モード] パラメーターを、キャストを最小限に抑える Nominal に設定します。詳細については、Control Cast Expressions in Generated Codeを参照してください。
5. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
生成されたコードが ex_data_type_SL.c に表示されます。
int32_T u1; /* '<Root>/u1' */
real_T y1; /* '<Root>/y1' */
/* Model step function */
void ex_data_type_SL_step(void)
{
/* Outport: '<Root>/y1' incorporates:
* DataTypeConversion: '<Root>/Data Type Conversion'
* Inport: '<Root>/u1'
*/
y1 = (real_T)u1;
}
double のコード ジェネレーターの型定義は real_T です。
Stateflow チャートにおけるデータ型の変換
Stateflow チャート内でデータ型の変換を実行できます。この例では、Stateflow チャートを使用してデータ型の変換のみを実行するモデルを示します。これは、Data Type Conversion ブロックを使用するよりも効率が低くなります。ただし、他の理由から Stateflow チャートを使用するモデルでデータ型の変換を実行する必要がある場合は、チャート内で変換を実行できます。
1. モデル例 ex_data_type_SF を開きます。

2. Inport ブロックをクリックします。プロパティ インスペクターの [信号属性] で、[データ型] を int32 に指定します。
3. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[キャスト モード] パラメーターを Explicit に設定します。
4. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
生成されたコードが ex_data_type_SF.c に表示されます。
int32_T u1; /* '<Root>/u1' */
real_T y1; /* '<Root>/Type_Conversion' */
/* Model step function */
void ex_data_type_SF_step(void)
{
/* Chart: '<Root>/Type_Conversion' incorporates:
* Inport: '<Root>/u1'
*/
y1 = (real_T)u1;
}
MATLAB Function ブロックにおけるデータ型の変換
MATLAB Function ブロック内でデータ型の変換を実行できます。この例では、MATLAB Function ブロックを使用してデータ型の変換のみを実行するモデルを示します。これは、Data Type Conversion ブロックを使用するよりも効率が低くなります。ただし、他の理由から MATLAB Function ブロックを使用するモデルでデータ型の変換を実行する必要がある場合は、MATLAB Function ブロック内で変換を実行できます。
1. モデル例 ex_data_type_ML を開きます。

2. MATLAB Function ブロックには次の関数が含まれています。
function y1 = typeconv(u1) y1 = double(u1); end
3. Inport ブロックをクリックします。プロパティ インスペクターの [信号属性] で、[データ型] を int32 に指定します。
4. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[キャスト モード] パラメーターを Explicit に設定します。
5. モデルをビルドしてコードを生成するには、Ctrl+B を押します。
生成されたコードが ex_data_type_ML.c に表示されます。
int32_T u_1; /* '<Root>/u_1' */
real_T y_1; /* '<Root>/MATLAB Function' */
/* Model step function */
void ex_data_type_ML_step(void)
{
/* MATLAB Function: '<Root>/MATLAB Function' incorporates:
* Inport: '<Root>/u_1'
*/
y_1 = (real_T)u_1;
}
モデル化におけるその他の型変換
出力変数が異なるデータ型として指定されているブロックの出力でも、型変換が行えます。たとえば、Gain ブロックでは、[パラメーターのデータ型] を Inherit via internal rule に設定して、出力信号のデータ型を制御できます。型変換の別の例として、Stateflow チャートの境界で行うこともできます。出力変数を別のデータ型として指定できます。