Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português -

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> CACSD > ui_observer

ui_observer

未知入力オブザーバ

呼出し手順

[UIobs,J,N]=ui_observer(Sys,reject,C1,D1)
[UIobs,J,N]=ui_observer(Sys,reject,C1,D1,flag,alfa,beta)

パラメータ

Sys

行列 (A,B,C2,D2)を含むsyslinリスト.

reject

整数ベクトル, Sys の未知入力の添え字.

C1

実数行列

D1

実数行列. C1 および D1 は同じ数の行を有します.

flag

文字列 'ge' または 'st' (default) または 'pp'.

alfa

実数または複素数のベクトル (閉ループ極の位置)

beta

r実数または複素数のベクトル (閉ループ極の位置)

説明

未知入力オブザーバ.

Sys: (w,u) --> y は, 2つの入力 w および u を有する (A,B,C2,D2) syslin 線形システムです. ただし, w は未知入力です. Sys の行列 B および D2 は (暗黙のうちに) 次のように分割されます: B=[B1,B2] および D2=[D21,D22] ただし,B1=B(:,reject) および D21=D2(:,reject) で, reject = 未知入力の添え字. 行列 C1 およびD1 は, 推定対象の出力 z = C1 x + D1 (w,u) を定義します.

行列 D1 は (暗黙のうちに) D11=D(:,reject) として D1=[D11,D12] のように分割されます

データ (Sys, reject,C1, D1) は次の2入力2出力システムを定義します:

xdot =  A x + B1  w + B2  u
   z = C1 x + D11 w + D12 u
   y = C2 x + D21 w + D22 u

オブザーバ (u,y) --> zhat は 出力 z を推定します.

flag='ge' 安定性拘束なし flag='st' 安定なオブザーバ (デフォルト) flag='pp' 極配置を指定するオブザーバ alfa,beta = 閉ループ極の指定位置 (デフォルト -1, -2) J=出力yから状態xへの注入. N=出力yから推定値出力zへの注入.

UIobs = 線形システム (u,y) --> zhat ただし: 伝達関数: (w,u) --> z は以下の複合伝達関数と等しくなります: [0,I; UIobs Sys] (w,u) -----> (u,y) -----> zhat すなわち, システム {A,B,C1,D1} の伝達関数は UIobs*[0,I; Sys]と等価になります

安定性 (または極配置) は(A,C2)の可検出性 (または可観測性) を要求します .

A=diag([3,-3,7,4,-4,8]);
B=[eye(3,3);zeros(3,3)];
C=[0,0,1,2,3,4;0,0,0,0,0,1];
D=[1,2,3;0,0,0];
rand('seed',0);w=ss2ss(syslin('c',A,B,C,D),rand(6,6));
[A,B,C,D]=abcd(w);
B=[B,matrix(1:18,6,3)];D=[D,matrix(-(1:6),2,3)];
reject=1:3;
Sys=syslin('c',A,B,C,D);
N1=[-2,-3];C1=-N1*C;D1=-N1*D;
nw=length(reject);nu=size(Sys('B'),2)-nw;
ny=size(Sys('C'),1);nz=size(C1,1);
[UIobs,J,N]=ui_observer(Sys,reject,C1,D1);

W=[zeros(nu,nw),eye(nu,nu);Sys];UIobsW=UIobs*W;   
//(w,u) --> z=UIobs*[0,I;Sys](w,u)
clean(ss2tf(UIobsW));
wu_to_z=syslin('c',A,B,C1,D1);clean(ss2tf(wu_to_z));
clean(ss2tf(wu_to_z)-ss2tf(UIobsW),1.d-7)
/////2nd example//////
nx=2;ny=3;nwu=2;Sys=ssrand(ny,nwu,nx);
C1=rand(1,nx);D1=[0,1];
UIobs=ui_observer(Sys,1,C1,D1);

参照

  • cainv — abinvの双対
  • ddp — 外乱デカップリング
  • abinv — AB 不変部分空間

作者

F.D.

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Mar 03 11:00:55 CET 2011