質問: simulinkのシミュレーションを実行中に伝達関数等のパラメータを計算結果をもとに変更する方法 現在、simulinkで制御モデルの設計を実施しており、伝達関数(s)を利用しています。その係数を、matlab上で定義した変数を初期値に使っています。例えば、一次遅れ系では1/(s+t)、sはラプラス変数、tは時間遅れの定数です。このtを、最初にmatlab上で定義し、simulinkで実行しております。係数を変えなければいけないのですが、応答の値がある閾値を超えたら時定数tを変更したい場合にシミュレーション中の変更する方法があれば教えて頂けないでしょうか。一応、workspaceに保存、読み込みでトライしたのですが、workspace変数は、時間を含む構造体でなければ使えないようで、今回のような定数のような形には対応していないようでした。w
回答: 伝達関数に限らず、以下のような用途ではsimulinkのsimstateという機能が使えます。 詳細はマニュアルをご参照ください。 #1. シミュレーションモデルのパラメータ変更後、シミュレーション継続 #2. 状態量の継続 また、伝達関数のパラメータを時変にしたいということであれば、 伝達関数を元の微分方程式に変換して、係数(パラメータ)を条件で切り替えるように モデル化する手もあります。