augment
拡張プラント
呼び出し手順
[P, r] = augment(G) [P, r] = augment(G, flag1) [P, r] = augment(G, flag1, flag2)
パラメータ
- G
線形システム (
syslin
リスト), ノミナルプラント- flag1
以下の文字(大文字)の一つ:
'S'
,'R'
,'T'
'SR'
,'ST'
,'RT'
'SRT'
- flag2
以下の文字の一つ:
'o'
(出力'output'を意味する, これがデフォルト値) または'i'
(入力'input'を意味する).- P
線形システム (
syslin
リスト), ``拡張''プラント- r
1x2 行ベクトル,
P22 = G
の次元
説明
flag1='SRT'
(デフォルト値)の場合,以下の"完全な" 拡張プラントを返します:
[ I | -G] ⇒ 'S' [ 0 | I] ⇒ 'R' P = [ 0 | G] ⇒ 'T' [-------] [ I | -G]
'S'
, 'R'
, 'T'
は,それぞれ,P
の最初の3つの(ブロック)行を指します.
flag1
の中にこれらの3文字のどれかが欠けた場合,
P
の対応する行がなくなります.
G
が状態空間形式で指定された場合,
戻り値 P
は最小実現になります.
P
は以下のように計算されます: [I,0,0;0,I,0;-I,0,I;I,0,0]*[I,-G;0,I;I,0]
.
入力感度関数に関連した拡張プラント,つまり, The augmented plant associated with input sensitivity functions, namely
[ I | -I] ⇒ 'S' (input sensitivity) [ G | -G] ⇒ 'R' (K*input sensitivity) P = [ 0 | I] ⇒ 'T' (K*G*input sensitivity) [-------] [ G | -G]
は,コマンド[P,r]=augment(G,flag,'i')
により得られます.
状態空間をG
とすると,
この P
は以下のように計算されます:
[I,-I;0,0;0,I;0,0]+[0;I;0;I]*G*[I,-I]
,
よって,一般に最小実現となります.
重み関数は,
P = blockdiag(W1,W2,W3,eye(G))*P
のように
P
に適当な次元の対角システムを
左から乗じることにより得られます.
感度関数はlft
により計算することができます.
出力感度関数 [P,r]=augment(P,'SRT') の場合: lft(P,r,K)=[inv(eye()+G*K);K*inv(eye()+G*K);G*K*inv(eye()+G*K)];
入力感度関数の場合 [P,r]=augment(P,'SRT','i'): lft(P,r,K)=[inv(eye()+K*G);G*inv(eye()+K*G);K*G*inv(eye()+G*K)];
例
G = ssrand(2,3,2); // プラント K = ssrand(3,2,2); // 補償器 [P,r] = augment(G,'T'); T = lft(P,r,K); // 相補感度関数 Ktf = ss2tf(K); Gtf = ss2tf(G); Ttf = ss2tf(T); T11 = Ttf(1,1); Oloop = Gtf * Ktf; Tn = Oloop * inv(eye(Oloop)+Oloop); clean(T11 - Tn(1,1)); // [Pi,r] = augment(G,'T','i'); T1 = lft(Pi,r,K); T1tf = ss2tf(T1); // 入力相補感度関数 Oloop = Ktf * Gtf; T1n = Oloop * inv(eye(Oloop)+Oloop); clean(T1tf(1,1) - T1n(1,1))
Report an issue | ||
<< Control Loop | Control Loop | feedback >> |