複数モデルの取り扱い | ![]() ![]() |
forループを使ってLTI配列の構築
2つのパラメータと
に依存する2次のSISO伝達関数を考えましょう。
入力と出力の測定データをベースに、パラメータと
のそれぞれについて、信頼範囲
と
を計算します。このモデルパラメータが与える信頼区間の可能な組み合わせは、4つのSISOモデルの集合です。
これら4つのモデルをH
と呼ばれるSISO伝達関数の2行2列の配列に配置します。
最初の2つのコロン記号()は、
H
のI/O次元からすべてのI/Oチャンネルを選択するものです。H
の3番目のインデックスは、最初の配列次元( )に関連し、4番目のインデックスは2番目の配列次元(
)に関連しています。
と
の範囲を{0.66 0.76]と[1.2 1.5]にします。コマンドラインで、つぎのように入力してください。
zeta = [0.66,0.75]; w = [1.2,1.5];
4つのモデルは、同じパラメトリックな構造をしているので、LTI配列の構築には、2つの入れ子状態のfor
ループを使用するのが便利です。
for i = 1:2 for j = 1:2 H(:,:,i,j) = tf(w(j)^2,[1 2*zeta(i)*w(j) w(j)^2]); end end
H
は、4つのモデルを2行2列の配列にしたものを含みます。たとえば、配列の(1,2)の位置の伝達関数を表示するには、つぎのようにタイプします。
H(:,:,1,2) Transfer function: 2.25 ------------------- s^2 + 1.98 s + 2.25
より計算を効率的に行うために、LTI配列をゼロで初期化し、その後、すべての配列に設定したい値を割り当てます。LTI配列にゼロを割り当てる一般的な構文を示します。
入れ子のfor
ループを実現する前に、この例題でH
をゼロで初期化するには、つぎのようにします。
H = tf(zeros(1,1,2,2));
![]() | コマンドrssを使って、LTI配列を作成 | 関数stackを使ってLTI配列を構築 | ![]() |