Main Content

モデルの高速化の紹介

Simulink® Accelerator™ は、C コードを作成してコンパイルすることにより、モデルの実行速度を向上させます。この C コードは、Simulink がノーマル モードのとき (つまり Simulink® がアクセラレータ モードでないとき) に使用する解釈コードの代わりとなります。Simulink Accelerator は、Simulink モデルから C コードを生成し、MATLAB® MEX 関数を呼び出して、生成されたコードをコンパイルして Simulink に動的にリンクします。このコード生成およびコンパイル処理は、はじめてモデルを高速化したときと、再生成する必要があるほど大幅にモデルが変更されたとき (たとえばブロックの追加など) に実行されます。

この例は、slAccelDemoF14 モデルを使用して、Simulink Accelerator の使用法を説明しています。

高速化されていない時間の測定

slAccelDemoF14 モデルを開き、終了時間を 3000 秒に設定します。TIC/TOC を使用して、モデルとその所要時間をシミュレートします。

modelName = 'slAccelDemoF14';
open_system(modelName)
set_param(modelName,'stoptime','3000')
tic
sim(modelName);
toc
Elapsed time is 12.145881 seconds.

アクセラレータをオンにする

Simulink® Accelerator を有効にするには、Simulink エディターの [シミュレーション] タブにある [シミュレーション] で、Accelerator を選択します。MATLAB® コマンド プロンプトで set_param コマンドを発行することもできます。

set_param(modelName,'SimulationMode','Accelerator')

高速化されたモデルの作成

高速化されたモデルを作成してシミュレートします。アクセラレータ モードでの実行時にモデルを起動するには、[シミュレーション] タブから [実行] を選択するか、次のコマンドを実行します。

    sim(modelName)

を MATLAB プロンプトで実行します。どちらの場合も、MATLAB コマンド ウィンドウにコード生成処理の進行状況が表示されます。この表示を抑制するには、sim コマンドを evalc 内にラップします。

evalc('sim(modelName);');

高速化されたモデルのシミュレーション

モデルを再度シミュレートします。後続の実行では、モデルのシミュレーションがはるかに高速に実行されます。

tic
sim(modelName);
toc
Elapsed time is 3.039049 seconds.

調整可能なパラメーターの変更および高速化されたモデルのシミュレーション

モデル内調整可能なパラメーターのいずれかの値を変更し、モデルを再度シミュレートします。高速バージョンのモデルは再生成する必要がないため、高速モードにしても、ノーマル モードのときよりもシミュレーションが高速に実行されます。

modelWorkspace = get_param(modelName,'ModelWorkspace');
evalin(modelWorkspace,'Mw=Mw*2;')
tic
sim(modelName);
toc
Elapsed time is 3.089631 seconds.

関連するトピック