Main Content

調整可能なモデルをサンプリングすることによるパラメーターの変化の調査

この例では、sampleBlock を使用してパラメーター値のグリッドにわたり 2 次フィルターのパラメトリック モデルをサンプリングする方法を示します。

以下で表される 2 次フィルターについて考えます。

F(s)=ωn2s2+2ζωns+ωn2.

減衰定数 ζ および固有振動数 ωn の値を変化させてこのフィルターをサンプリングします。ζωn の調整可能な要素を使用してフィルターのパラメトリック モデルを作成します。

wn = realp('wn',3);
zeta = realp('zeta',0.8);
F = tf(wn^2,[1 2*zeta*wn wn^2])
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks:
  wn: Scalar parameter, 5 occurrences.
  zeta: Scalar parameter, 1 occurrences.

Type "ss(F)" to see the current value and "F.Blocks" to interact with the blocks.

F は、2 つの調整可能な制御設計ブロックである、wnzeta という realp ブロックをもつ genss モデルです。ブロック wn および zeta には、それぞれ 3 および 0.8 の初期値があります。

(wn,zeta) の値からなる 2 行 3 列のグリッドに対して F をサンプリングします。

wnvals = [3;5];
zetavals = [0.6 0.8 1.0];
Fsample = sampleBlock(F,'wn',wnvals,'zeta',zetavals);

ここで、sampleBlock は、2 つの ωn 値と 3 つの ζ 値について個別にモデルをサンプリングします。したがって、Fsample は状態空間モデルの 2 行 3 列の配列です。配列の各要素は、対応する (wn, zeta) ペアで評価された F を表す状態空間モデルです。たとえば、Fsample(:,:,2,3) には wn = 5 と zeta = 1.0 があります。

モデル配列の SamplingGrid プロパティを設定すると、どのパラメーター値のセットが配列のどのエントリに対応するかの追跡に役立ちます。これを行うには、配列の次元と一致するパラメーター値のグリッドを作成します。次に、これらの値をパラメーター名を指定して構造体形式で Fsample.SamplingGrid に代入します。

[wngrid,zetagrid] = ndgrid(wnvals,zetavals);
Fsample.SamplingGrid = struct('wn',wngrid,'zeta',zetagrid);

ndgrid コマンドは (wn, zeta) の組み合わせからなる 2 行 3 列のフル グリッドを生成します。Fsample をコマンド ウィンドウで表示すると、Fsample.SamplingGrid のパラメーター値が配列の各伝達関数とともに表示されます。パラメーター情報は、応答プロットでも使用可能です。たとえば、Fsample のステップ応答を調べます。

stepplot(Fsample)

ステップ応答のプロットは、配列内の 6 つのモデルにわたる固有振動数と減衰定数の変動を示しています。プロットにある応答の 1 つをクリックすると、データヒントには Fsample.SamplingGrid で指定した、対応する wnzeta の値が表示されます。

参考

関連するトピック