モデルの高速化の紹介
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.404970 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 2.382191 seconds.
調整可能なパラメーターの変更および高速化されたモデルのシミュレーション
モデル内調整可能なパラメーターのいずれかの値を変更し、モデルを再度シミュレートします。高速バージョンのモデルは再生成する必要がないため、高速モードにしても、ノーマル モードのときよりもシミュレーションが高速に実行されます。
modelWorkspace = get_param(modelName,'ModelWorkspace'); evalin(modelWorkspace,'Mw=Mw*2;') tic sim(modelName); toc
Elapsed time is 2.556675 seconds.