調整可能なモデルをサンプリングすることによるパラメーターの変化の調査
この例では、sampleBlock
を使用してパラメーター値のグリッドにわたり 2 次フィルターのパラメトリック モデルをサンプリングする方法を示します。
以下で表される 2 次フィルターについて考えます。
減衰定数 および固有振動数 の値を変化させてこのフィルターをサンプリングします。 と の調整可能な要素を使用してフィルターのパラメトリック モデルを作成します。
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 つの調整可能な制御設計ブロックである、wn
と zeta
という 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 つの 値と 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
で指定した、対応する wn
と zeta
の値が表示されます。