主要内容

このペジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

生成されたコドからのデッドコドパスの除去

以下の例では,コードジェネレーターを使用して,デッド(つまり,未使用)コードパスを生成されたコードから除去する方法について示します。この最適化により実行速度が上がり,romとramの消費量を節約します。

モデルrtwdemo_deadpathElimでは,Sumブロックから出ていく信号は2の個別のコドバスに分割されます。一番上のパスはデッドコドパスではありません。ユーザーが断言ブロックを無効にすると,一番下のパスがデッドコードパスになります。

模型=“rtwdemo_deadpathElim”;open_system(模型);

有効な断言ブロックを使用したコドの生成

  1. 断言ブロックに対して,ブロックパラメ。

  2. [アサションを有効にする]ボックスをオンにします。あるいは、コマンドラereplicationンAPIを使用して断言ブロックを有効にします。

set_param([模型' / Assert1 '],“启用”“上”);

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

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

モデルを作成します。

slbuild(模型)
成功完成:rtwdemo_deadpathElim的构建过程构建总结已构建的顶级模型目标:模型操作重建原因===================================================================================================== rtwdemo_deadpathElim生成和编译的代码生成信息文件不存在。构建1个模型(0个模型已经更新)构建持续时间:0h 0m 12.88s

断言ブロックが有効になっているため,rtwdemo_deadpathElim.cの以下の行には增益ブロックおよび断言ブロックのコドが含まれます。

cfile = fullfile(cgDir,“rtwdemo_deadpathElim_grt_rtw”“rtwdemo_deadpathElim.c”);rtwdemodbtype(用'/*模型步长''/*模型初始化函数, 0, 1);
void rtwdemo_deadpathElim_step(void) {/* Sum: '<根>/Sum1'合并:* Constant: '<根>/Constant1' * Inport: '<根>/In1' */ rtwdemo_deadpathElim_Y。Out1 = rtwdemo_deadpathElim_U。In1 + 1.0;/*断言:'<根>/Assert1'合并:*增益:'<根>/G1' */ utAssert(2.0 * rtwdemo_deadpathElim_Y。Out1 != 0.0);}

無効な断言ブロックを使用したコドの生成

断言ブロックを無効にしてデッドコドパスを生成します。コドジェネレタはデッドコドパスを検出し,生成されたコドからそれを除去します。

  1. 断言ブロックに対して,ブロックパラメ。

  2. [アサションを有効にする]ボックスをオフにします。

あるいは、コマンドラereplicationンAPIを使用して断言ブロックを無効にします。

set_param([模型' / Assert1 '],“启用”“关闭”);

モデルを作成します。

slbuild(模型)
成功完成:rtwdemo_deadpathElim的构建过程构建总结已构建的顶级模型目标:模型操作重建原因==================================================================================== rtwdemo_deadpathElim已生成和编译的代码已过时。构建1个模型(0个模型已经更新)构建持续时间:0h 0m 8.5666秒

断言ブロックが無効になっているため,rtwdemo_deadpathElim.cの以下の行には增益ブロックおよび断言ブロックのコドは含まれません。

rtwdemodbtype(用'/*模型步长''/*模型初始化函数, 0, 1);
void rtwdemo_deadpathElim_step(void) {/* Outport: '<根>/Out1'合并:* Constant: '<根>/Constant1' * Inport: '<根>/In1' * Sum: '<根>/Sum1' */ rtwdemo_deadpathElim_Y。Out1 = rtwdemo_deadpathElim_U。In1 + 1.0;}

モデルを閉じてクリンアップします。

bdclose rtwdemoclean(模型);cd (currentDir)

コードジェネレーターを使用して,デッドコードパスを生成されたコードから除去する方法の別の例については,rtwdemo_deadpathを参照してください。

関連するトピック