このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
組み込みアプリケーションの単精度データ型の指定
単精度プロセッサをターゲットとするなど、コードで単精度のみを使用する場合、モデル コンフィギュレーション パラメーターとブロック パラメーターを使用してモデルに double
が入り込まないようにできます。
単精度モデルの設計および検証については、浮動小数点組み込みモデルの検証を参照してください。Fixed-Point Designer™ がある場合、単精度コンバーター アプリを使用できます (単精度コンバーター (Fixed-Point Designer)を参照)。
指定不足の型の既定としての single
データ型の使用
この例では、単精度ハードウェア ターゲット用に生成されたコードにおいて、倍精度データ型が採用されるのを避ける方法を示します。
信号の継承されたデータ型を指定するが、データ型伝播ルールが信号のデータ型を決定できない場合、信号データ型の既定は double
です。モデル コンフィギュレーション パラメーターを使用して既定のデータ型を single
として指定できます。
モデル例の確認
モデル例 rtwdemo_underspecified_datatype を開き、生成されたブロック名が表示されるように設定します。
model = 'rtwdemo_underspecified_datatype'; load_system(model) set_param(model,'HideAutomaticNames','off') open_system(model);
ルート入力端子 In2
、In3
、および In4
は [データ型] ブロック パラメーターに Inherit: Auto
を指定します。下流ブロックも継承されたデータ型を使用します。
既定のデータ型として double
をもつコードの生成
モデルはコンフィギュレーション パラメーター [システム ターゲット ファイル] を ert.tlc
に設定して開始されます。これには Embedded Coder® が必要です。代わりに、[システム ターゲット ファイル] を grt.tlc
に設定します。
set_param(model,'SystemTargetFile','grt.tlc')
モデルからコードを生成します。
slbuild(model)
### Starting build procedure for: rtwdemo_underspecified_datatype ### Successful completion of build procedure for: rtwdemo_underspecified_datatype Build Summary Top model targets built: Model Action Rebuild Reason ================================================================================================================= rtwdemo_underspecified_datatype Code generated and compiled. Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 12.679s
コード生成レポートで、ファイル rtwdemo_underspecified_datatype.h
を表示します。コードは、モデル内で入力データ型が指定不足のため、変数 In2
、In3
、および In4
の定義に double
データ型を使用します。
cfile = fullfile('rtwdemo_underspecified_datatype_grt_rtw',... 'rtwdemo_underspecified_datatype.h'); rtwdemodbtype(cfile,... '/* External inputs (root inport signals with default storage) */',... '/* External outputs (root outports fed by signals with default storage) */',... 1, 0);
/* External inputs (root inport signals with default storage) */ typedef struct { int8_T In1; /* '<Root>/In1' */ real_T In2; /* '<Root>/In2' */ real_T In3; /* '<Root>/In3' */ real_T In4; /* '<Root>/In4' */ } ExtU_rtwdemo_underspecified_d_T;
既定のデータ型として single
をもつコードの生成
[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[数学とデータ型] ペインの、[指定不足のデータ型の既定値] ドロップダウン リストで [single
] を選択します。
あるいは、コマンド プロンプトで最適化を有効にします。
set_param(model, 'DefaultUnderspecifiedDataType', 'single');
モデルからコードを生成します。
slbuild(model)
### Starting build procedure for: rtwdemo_underspecified_datatype ### Successful completion of build procedure for: rtwdemo_underspecified_datatype Build Summary Top model targets built: Model Action Rebuild Reason ================================================================================================ rtwdemo_underspecified_datatype Code generated and compiled. Generated code was out of date. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 9.617s
コード生成レポートで、ファイル rtwdemo_underspecified_datatype.h
を表示します。コードは変数 In2
、In3
、および In4
の定義に single
データ型を使用しています。
rtwdemodbtype(cfile,... '/* External inputs (root inport signals with default storage) */',... '/* External outputs (root outports fed by signals with default storage) */',... 1, 0);
/* External inputs (root inport signals with default storage) */ typedef struct { int8_T In1; /* '<Root>/In1' */ real32_T In2; /* '<Root>/In2' */ real32_T In3; /* '<Root>/In3' */ real32_T In4; /* '<Root>/In4' */ } ExtU_rtwdemo_underspecified_d_T;