複数モデルの取り扱い | ![]() ![]() |
LTI配列に対する演算の特殊な場合
LTI配列に対するコーディングされた演算において特殊な場合がいくつかあります。
sysa = op(sys1,sys2)
を考えます。ここで、op
は、適用する演算を表わすシンボルで、sys1
はLTI配列、sysa
(演算の結果もとまるもの)は、sys1と同じ配列次元をもつLTI配列です。つぎの場合、sysa = op(sys1,sys2)
のコーディングにショートカットを使うことができます。
sys2
は配列とはなりません。単一のLTIモデル(または一つのゲインの行列)のI/O次元は、op
が必要とする整合性を満足します(sys1
の中の各モデルのそれぞれと整合性が満たされる)。この場合、op
はsys1
の中の各モデルにsys2
を適用し、sys
の中のk番目のモデルは、つぎの関係を満足します。sysa(:,:,k) = op(sys1(:,:,k),sys2)
+
, *
, /
, and \
, sys2
のような代数演算に対して、sys1
がMIMOモデルのLTI配列の場合でも、sys2
は単一SISOモデルかまたはSISOモデルのLTI配列のどちらかです。この特別な場合は、代数演算に対してスカラ展開機能を使います。sys2
が単一のSISO LTIモデル(または、スカラゲイン)の場合、op
は、sys1
の要素にsys2
を適用します。sysa
の中のk番目のモデルのij番目の要素は、つぎのようになります。sysa(i,j,k) = op(sys1(i,j,k),sys2)
sys2
が、SISOモデルのLTI配列(または、スカラゲインの多次元配列)の場合、op
は、sysa
の中の各モデルに対して、sys2
をsys1
につぎのように要素単位に適用します。sysa(i,j,k) = op(sys1(i,j,k),sys2(:,:,k))
単一LTIモデルをもつLTI配列への演算の例題
各モデルがつぎの型をもち、
が
である3つのモデルを含むLTI配列を作成することを考えます。
SISOモデルを含むLTI配列
h
をまず作成し、MIMO LTIモデル,
のLTI配列を連結を使って効率的に行うには、つぎのように入力します。
tau = [1.1 1.2 1.3]; for i=1:3 % SISOモデルのLTI配列を作成 h(:,:,i)=tf(1,[1 tau]); end H = [h 0; -1 tf(1,[1 0])]; %連結:配列hと単一モデル size(H) 3x1 array of continuous-time transfer functions Each transfer function has 2 output(s) and 2 input(s).
同様に、固定された単一(SISOまたはMIMO)LTIモデルをもつSISO LTI配列h
に各モデルを対角的に付加するために、append
を使います。
S = append(h,tf(1,[1 3])); % 単一モデルをhに付加
で表わされるLTI配列S
を指定します。MIMOモデルのLTI配列と単一のMIMO LTIモデルを代数演算子を使って結合します。たとえば、h
は上で定義した3つのSISOモデルのLTI配列とすると、
[h,h] + [tf(1,[1 0]);tf(1,[1 5])]
は、1出力2入力モデル[1/s 1/(s+5)]を、1出力2入力モデル[h,h]
の3行1列のLTI配列の中のすべてのモデルに付加します。結果は、新しい3行2列のモデルになります。
例題:LTI配列とSISOモデルに代数演算を適用
前に定義した1出力2入力の状態空間モデル[h,h]
のLTI配列を使って、
tf(1,[1 3]) + [h,h]
は、MIMOモデル[h,h]
のLTI配列の各モデルの各要素に単一SISO伝達関数モデルを付加します。
G = rand(1,1,3,1); sysa = G + [h,h]
は、LTI配列[h,h]
の中の各MIMOモデルの各要素にスカラ配列をモデル単位に付加します。この最後のコマンドは、つぎのfor
ループと等価です。
hh = [h,h]; for k = 1:3 sysa(:,:,k) = G(1,1,k) + hh(:,:,k); end
![]() | 次元に関する条件 | LTI配列への他の演算 | ![]() |