ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

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

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

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

$$H\left( s \right) = \frac{{{\omega ^2}}}{{{s^2} + 2\zeta \omega s + {\omega ^2}}}.$$

次の 2 つのパラメーターによって変わります。減衰比 $\zeta$ と固有振動数 $\omega$ です。 $\zeta$ $\omega$ が両方変化する場合、次の形式の複数の伝達関数が得られます。

$${H_{ij}}\left( s \right) = \frac{{\omega _j^2}}{{{s^2} + 2{\zeta _i}{\omega _j}s + \omega _j^2}},$$

ここで、 $\zeta_i$ および $\omega_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 列の配列です。 $\zeta$ は、H の単一列に沿ってモデル間を移動すると変化します。パラメーター $\omega$ は単一列に沿って移動すると変化します。

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

stepplot(H)

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

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

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

この情報は役に立ちましたか?