Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

2 つのパラメーターが変化するモデル配列

この例は、for ループを使用して伝達関数の 2 次元 (2-D) 配列を作成する方法を示しています。伝達関数の 1 つのパラメーターは、配列の各次元で変化します。

この例の方法を使用して、より多くのパラメーターが変化する高次元の配列を作成できます。そのような配列は、システム応答で複数のパラメーターが変化したときの影響を調査する場合に便利です。

次の 2 次単入力単出力 (SISO) 伝達関数は、

H(s)=ω2s2+2ζωs+ω2.

減衰比 ζ と固有振動数 ω という 2 つのパラメーターに依存します。ζω が両方変化する場合、次の形式の複数の伝達関数が得られます。

Hij(s)=ωj2s2+2ζiωjs+ωj2,

ここで、ζiωj は可変パラメーターのさまざまな測定値やサンプル値を表します。これらの伝達関数のすべてを単一の変数に集めて、2 次元モデル配列を作成できます。

モデル配列のメモリを事前に割り当てます。メモリの事前割り当ては任意で行う手順ですが、これにより計算効率を高めることができます。事前割り当てを行うには、必要なサイズのモデル配列を作成し、そのエントリを 0 に初期化します。

H = tf(zeros(1,1,3,3));

この例では、伝達関数 H の各パラメーターに対して 3 つの値があります。そのため、このコマンドは単入力単出力 (SISO) zero 伝達関数の 3 行 3 列の配列を作成します。

パラメーター値を含む配列を作成します。

zeta = [0.66,0.71,0.75];
w = [1.0,1.2,1.5];

パラメーター値のすべての組み合わせでループすることによって配列を作成します。

for i = 1:length(zeta)
  for j = 1:length(w)
    H(:,:,i,j) = tf(w(j)^2,[1 2*zeta(i)*w(j) w(j)^2]);
  end
end

H は伝達関数の 3 行 3 列の配列です。ζ は、H の単一列に沿ってモデル間を移動すると変化します。パラメーター ω は単一行に沿って移動すると変化します。

H のステップ応答をプロットして、パラメーターの変化がステップ応答にどのように影響するかを確認します。

stepplot(H)

Figure contains an axes object. The axes object contains 9 objects of type line. This object represents H.

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

[zetagrid,wgrid] = ndgrid(zeta,w);
H.SamplingGrid = struct('zeta',zetagrid,'w',wgrid);

H を表示すると、H.SamplingGrid のパラメーター値が配列の各伝達関数とともに表示されます。

参考

関連するトピック