Main Content

組み込みアプリケーションの単精度データ型の指定

単精度プロセッサをターゲットとするなど、コードで単精度のみを使用する場合、モデル コンフィギュレーション パラメーターとブロック パラメーターを使用してモデルに 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);

ルート入力端子 In2In3、および 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 15.414s

コード生成レポートで、ファイル rtwdemo_underspecified_datatype.h を表示します。コードは、モデル内で入力データ型が指定不足のため、変数 In2In3、および 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 11.272s

コード生成レポートで、ファイル rtwdemo_underspecified_datatype.h を表示します。コードは変数 In2In3、および 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;

関連するトピック