最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

計算結果に影響しないブロックのコードの削除

以下の例では、コード ジェネレーターを使用して、計算結果に影響しないコードを削除して生成されたコードを最適化する方法を示します。最適化により、以下が実現されます。

  • 実行速度が上がる。

  • ROM の消費を低減する。

モデル rtwdemo_blockreduction では、値 1.0 の Gain ブロックは Inport ブロックと Outport ブロックの間にあります。

model = 'rtwdemo_blockreduction';
open_system(model);

コードの生成

ビルドと検査プロセス用に一時フォルダーを作成します。

currentDir=pwd;
[~,cgDir]=rtwdemodir();

モデルを作成します。

set_param(model,'BlockReduction','off');
rtwbuild(model)
### Starting build procedure for model: rtwdemo_blockreduction
### Successful completion of build procedure for model: rtwdemo_blockreduction

rtwdemo_blockreduction.c からのコードは、以下のとおりです。

cfile = fullfile(cgDir,'rtwdemo_blockreduction_ert_rtw','rtwdemo_blockreduction.c');
rtwdemodbtype(cfile, '/* Model step function */',...
    '/* Model initialize function */', 1, 0);
/* Model step function */
void rtwdemo_blockreduction_step(void)
{
  /* Outport: '<Root>/Out1' incorporates:
   *  Gain: '<Root>/Gain'
   *  Inport: '<Root>/In1'
   */
  rtwdemo_blockreduction_Y.Out1 = 1.0 * rtwdemo_blockreduction_U.In1;
}

最適化の有効化

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。

  2. [ブロック削減] を選択します。既定の設定では、最適化はオンです。

代わりに、コマンド ライン API を使用して最適化を有効にします。

set_param(model,'BlockReduction','on');

最適化を使用したコードの生成

rtwbuild(model)
### Starting build procedure for model: rtwdemo_blockreduction
### Successful completion of build procedure for model: rtwdemo_blockreduction

最適化された rtwdemo_blockreduction.c からのコードは、以下のとおりです。

cfile = fullfile(cgDir,'rtwdemo_blockreduction_ert_rtw','rtwdemo_blockreduction.c');
rtwdemodbtype(cfile, '/* Model step function */',...
    '/* Model initialize function */', 1, 0);
/* Model step function */
void rtwdemo_blockreduction_step(void)
{
  /* Outport: '<Root>/Out1' incorporates:
   *  Inport: '<Root>/In1'
   */
  rtwdemo_blockreduction_Y.Out1 = rtwdemo_blockreduction_U.In1;
}

入力信号を 1.0 の値で乗算しても計算結果に影響しないため、コード ジェネレーターは Gain ブロックを生成されたコードから除外します。モデルを閉じてクリーンアップします。

bdclose(model)
rtwdemoclean;
cd(currentDir)

参考

関連するトピック