System Identification Toolboxで推定​したシステムをSim​ulinkで用いるに​はどうすれば良いです​か?

10 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
回答済み: MathWorks Support Team 2013 年 10 月 25 日
System Identification Toolboxで推定したシステムをSimulinkで用いるにはどうすれば良いか教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
(1) 推定したシステムがIDPOLY, IDSS, IDGREY, IDARX, IDPROC オブジェクトの場合
推定したシステムをSimulinkモデルで使用するには、下記の2通りの方法があります。
a. System Identification Toolbox ライブラリにある、Idmodelブロックを用いて定義する方法(R14-R2007a)
b. 推定したシステムを伝達関数形式に変換し、Transfer Fcnブロックを用いて定義する方法
a. System Identification Toolbox ライブラリにある、Idmodelブロックを用いて定義する方法(R14-R2007a)、Idmodelのブロックパラメータで、推定で得られた変数を指定します。
b. 推定したシステムを伝達関数形式に変換し、Transfer Fcnブロックを用いて定義する方法下記コマンドを実行し、伝達関数の係数を求めます。
systf=tf(idsys,'m'); % tf関数で伝達関数形式へ変換 (idsys:推定したモデル)
[num,den]=tfdata(systf); % 伝達関数の係数を取得(num:分子係数,den:分母係数)
得られた係数 num, denをTransfer Fcnブロックのブロックパラメータで設定します。
サンプルモデルにつきましては、ページ下部の関連ドキュメントよりダウンロードできます。
サンプルファイルのダウンロード:id_lti_sample.mdl, id2sim_samp.m
(注意)ファイルのダウンロードはダウンロード対象のリンクを右クリックし「対象をファイルに保存」を選択してダウンロードを行ってください。
動作を確認するには、2つのファイルを同じディレクトリに置き、シミュレーションを実行します。
なお、サンプルモデルを動作させるには、Control System Toolboxが必要です。
本サンプルでは、まず推定用の伝達関数を定義し、次に伝達関数から周波数応答を求め、得られた周波数応答データからシステムの推定を行なっています。
シミュレーションを実行すると、推定用の伝達関数と推定後のシステムの応答が同じであることが確認できます。ここで、推定用の伝達関数(LTIオブジェクト)をSimulinkで定義する際に、Control System ToolboxライブラリにあるLTI Systemブロックを使用しています。
なお、ここでは同定したシステムが連続の場合の定義方法を紹介しました。同定したシステムが離散の場合は、Idmodel ブロック、LTI System ブロックはそのまま利用できます。Simulink の Tranfer Fcn は離散システムでは利用できないため、Discrete ライブラリにある Discrete Tranfer Fcn ブロックを使用し、上記TFDATA で得られた変数を使用します。 TF形式へ変換するところまでは連続と同じコマンドを使用します。TFDATA関数で係数を取得する時にサンプル時間も取得します。下記がコマンドの実行例です。
sys_disc = tf(1,[1 0.3],0.1); % 離散伝達関数の例
[num,den,Ts]=tfdata(sys_disc);
(2)推定したシステムがIdnlgreyオブジェクト(R2007aから利用可能)の場合
System Identification Toolbox ライブラリにある、Idnlgrey Modelブロックを用います。
ブロックパラメータの定義の仕方は、(1)のaと同じように、Idnlgrey Modelのブロックパラメータで、推定で得られた変数を指定します。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange周波数応答のオフライン推定 についてさらに検索

製品


リリース

R14SP1

Community Treasure Hunt

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

Start Hunting!