Using Simulink |
 |
シミュレーションの高速化
シミュレーションが遅いことには多くの原因があります。以下にそのいくつかを示します。
- モデルにMATLAB Fcnブロックが含まれています。モデルにMATLAB Fcnブロックが含まれている場合、各時間ステップごとにMATLABインタプリタが呼び出され、シミュレーションの速度が大幅に遅くなります。できるだけ組み込みFcnブロックまたはElementary Mathブロックを用いてください。
- モデルにM-ファイルによるS-ファンクションが含まれています。M-ファイルによるS-ファンクションによっても、MATLABインタプリタが各時間ステップごとに呼び出されます。S-ファンクションをサブシステムかC-MEXファイルS-ファンクションに変換することを考慮してください。
- モデルにMemoryブロックが含まれています。Memoryブロックを使用すると、可変次数ソルバ (
ode15s
および ode113
) は各時間ステップごとに1次に再設定されます。
- 最大ステップサイズが小さすぎます。最大ステップサイズを変更している場合には、デフォルト値 (
auto
) で再度シミュレーションを実行してみてください。
- 高すぎる精度を要求していませんか?通常はデフォルトの相対的許容値(0.1%の精度)で十分です。ゼロになる状態をもつモデルの場合、絶対的許容値パラメータが小さすぎると、シミュレーションがゼロに近い状態値の周辺であまりにも多くのステップを取る可能性があります。誤差許容値の説明を参照してください。
- 時間スケールが長すぎる可能性があります。時間区間を短くしてください。
- 問題がスティッフである可能性がありますが、ノンスティッフなソルバを使用しています。
ode15s
を使用してみてください。
- モデルは、互いに倍数でないサンプル時間を使用しています。互いに倍数でないサンプル時間が混在すると、ソルバはすべてのサンプル時間に対してサンプル時間を確実にヒットするために、結果として十分小さなステップを使うことになります。
- モデルに代数ループが含まれています。代数ループに対する解は、各時間ステップごとに繰り返し計算されます。したがって、性能が大幅に低下します。詳細については、
- モデルは、Random NumberブロックをIntegratorに入力しています。連続システムの場合、SourcesライブラリのBand-Limited White Noiseブロックを使用してください。
| シミュレーションの性能と精度の改良 | | シミュレーション精度の改良 |  |