Azzera filtri
Azzera filtri

計算タイミングの違うモデルを実行する

3 visualizzazioni (ultimi 30 giorni)
雄介 牧本
雄介 牧本 il 10 Dic 2020
Risposto: Toshinobu Shintai il 11 Dic 2020
simulink内でifを用いて実行タイミングを異なっているモデルを実行させ,同じ結果にしたいと考えています.
具体的には同じ伝達関数をIf action subsystem内で1[ms]で実行するものと,シミュレーション実行サンプルタイミングである0.01[ms]ごとに実行するものを同じ結果を得たいと考えています.
サンプルsimilinkを添付いたします.
よろしくお願いします.

Risposta accettata

Toshinobu Shintai
Toshinobu Shintai il 11 Dic 2020
添付ファイルのようなモデルはどうでしょうか。
まず、サブシステム内を離散で実行させるために、必ずしもIf Actionを用いる必要はありませんので、私がやりやすいようにサブシステムをアトミック化し、サンプル時間を設定しました。If Actionでなければならない場合は、そのように修正してください。
離散時間で動作するモデルでは、基本的には離散時間のブロックを使います。添付モデルでは連続の1次遅れ伝達関数と同じダイナミクスを持つ離散時間のブロックを設計しました。
「param.m」に記載しましたが、1次遅れ伝達関数と同じ特性を持つ離散時間フィルターの重みを計算する式は以下になります。
ts = 1e-5; % シミュレーションのタイムステップ[s]
tc = 1e-3; % 離散フィルターのタイムステップ[s]
wc = 5; % 1次ローパスフィルタのカットオフ周波数[rad/s]
% 1次離散ローパスフィルタの重み
r = cos(wc * tc) - 1 + sqrt((cos(wc * tc) - 1) * (cos(wc * tc) - 3));

Più risposte (0)

Categorie

Scopri di più su モデル コンポーネントのスケジュール in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!