Main Content

Simulink Recursive Estimator ブロックを使用したシステムのパラメーターの推定

この例では、2 パラメーター システムのパラメーターを推定して、測定された出力と推定された出力を比較する方法を説明します。

この例は、recursiveLS で提供されている Simulink バージョンのコマンド ライン パラメーター推定例です。

システムは 2 つのパラメーターをもち、次のように表されます。

$y(t) = a_1u(t) + a_2u(t-1)$

ここで

  • $u$ および $y$ はそれぞれ、リアルタイムの入力データおよび出力データです。

  • $u(t)$ および $u(t-1)$ はシステムのリグレッサー $H$ です。

  • $a_1$ および $a_2$ はシステムのパラメーター $\theta$ です。

データを読み込み、入力、出力、および時間情報を抽出します。

この例をコマンド ライン recursiveLS の例と直接比較するには、時間ベクトルを 1 位置分、シフトします。このシフトにより、Simulink の入力 (時間は 0 で開始) がコマンド ラインの入力 (時間は最初のサンプル時間で開始) と同期されます。

load iddata3
input = z3.u;
output = z3.y;
time = z3.SamplingInstants-1;

Simulink の入力信号と出力信号を作成します。

input_sig = timeseries(input,time);
output_sig = timeseries(output,time);

Recursive Least Squares Estimator ブロックに基づいて、事前構成された Simulink モデルを開きます。このモデルには次の項目が含まれています。

  • "input_sig" ブロックおよび "output_sig" ブロックは input_sig および output_sig をインポートします。

  • 遅延線形ブロックによって input_sig をルーティングしてから、遅延信号を元の信号と多重化することで、このモデルは "リグレッサー" の信号を作成します。

  • "Error" 端子は、推定された誤差信号を提供します。"Sum" ブロックは、input_sig からこの誤差を差し引いて、推定された出力を生成します。

  • 次に "Mux" ブロックは、測定された (output_sig) 出力信号と推定された出力信号を組み合わせて、これらをスコープに一緒に表示できるようにします。

rls = 'ex_RLS_Estimator_Block_sb_inf';
open_system(rls)

シミュレーションを実行します。"Parameter Scope" に、推定の進行が表示されます。隣接する "Parameter Display" に、最終的な数値が表示されます。"Outputs Scope" により、測定された出力と推定された出力が一緒にプロットされます。

sim(rls)
open_system([rls '/Parameter Scope'])
open_system([rls '/Outputs Scope'])

モデル パラメーターを変更すると、その他のブロック構成を検討できます。次に例を示します。

  • アルゴリズムの選択が結果にどのように影響するかを確認するには、[推定法] を変更します。

  • スライディング ウィンドウ アルゴリズムを適用するには、[履歴]finite に、[ウィンドウの長さ]30 に変更します。

参考

| |

関連するトピック