- Scilab help
 - CACSD
 - abcd
 - abinv
 - arhnk
 - arl2
 - arma
 - arma2p
 - armac
 - armax
 - armax1
 - arsimul
 - augment
 - balreal
 - bilin
 - black
 - bode
 - bstap
 - cainv
 - calfrq
 - canon
 - ccontrg
 - chart
 - cls2dls
 - colinout
 - colregul
 - cont_frm
 - cont_mat
 - contr
 - contrss
 - copfac
 - csim
 - ctr_gram
 - dbphi
 - dcf
 - ddp
 - des2ss
 - des2tf
 - dhinf
 - dhnorm
 - dscr
 - dsimul
 - dt_ility
 - dtsi
 - equil
 - equil1
 - evans
 - feedback
 - findABCD
 - findAC
 - findBD
 - findBDK
 - findR
 - findx0BD
 - flts
 - fourplan
 - frep2tf
 - freq
 - freson
 - fspecg
 - fstabst
 - g_margin
 - gainplot
 - gamitg
 - gcare
 - gfare
 - gfrancis
 - gtild
 - h2norm
 - h_cl
 - h_inf
 - h_inf_st
 - h_norm
 - hallchart
 - hankelsv
 - hinf
 - imrep2ss
 - inistate
 - invsyslin
 - kpure
 - krac2
 - lcf
 - leqr
 - lft
 - lin
 - linf
 - linfn
 - linmeq
 - lqe
 - lqg
 - lqg2stan
 - lqg_ltr
 - lqr
 - ltitr
 - m_circle
 - macglov
 - markp2ss
 - minreal
 - minss
 - mucomp
 - narsimul
 - nehari
 - nicholschart
 - noisegen
 - nyquist
 - nyquistfrequencybounds
 - obs_gram
 - obscont
 - observer
 - obsv_mat
 - obsvss
 - p_margin
 - parrot
 - pfss
 - phasemag
 - ppol
 - prbs_a
 - projsl
 - reglin
 - repfreq
 - ric_desc
 - ricc
 - riccati
 - routh_t
 - rowinout
 - rowregul
 - rtitr
 - sensi
 - sgrid
 - show_margins
 - sident
 - sm2des
 - sm2ss
 - sorder
 - specfact
 - ss2des
 - ss2ss
 - ss2tf
 - st_ility
 - stabil
 - svplot
 - sysfact
 - syssize
 - tf2des
 - tf2ss
 - time_id
 - trzeros
 - ui_observer
 - unobs
 - zeropen
 - zgrid
 
Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
ui_observer
unknown input observer
Calling Sequence
[UIobs,J,N]=ui_observer(Sys,reject,C1,D1) [UIobs,J,N]=ui_observer(Sys,reject,C1,D1,flag,alfa,beta)
Arguments
- Sys
 syslinlist containing the matrices(A,B,C2,D2).- reject
 integer vector, indices of inputs of
Syswhich are unknown.- C1
 real matrix
- D1
 real matrix.
C1andD1have the same number of rows.- flag
 string
'ge'or'st'(default) or'pp'.- alfa
 real or complex vector (loc. of closed loop poles)
- beta
 real or complex vector (loc. of closed loop poles)
Description
Unknown input observer.
Sys: (w,u) --> y is a (A,B,C2,D2) syslin linear system with 
    two inputs w and u, w being the unknown input.
    The  matrices B and D2 of Sys are (implicitly) partitioned as:
    B=[B1,B2] and D2=[D21,D22]  with B1=B(:,reject)  and 
    D21=D2(:,reject) where reject = indices of unknown inputs.
    The matrices C1 and D1 define z = C1 x + D1 (w,u),
    the to-be-estimated output.
The matrix D1 is (implicitly) partitioned as D1=[D11,D12]
    with D11=D(:,reject)
The data (Sys, reject,C1, D1) define a 2-input 2-output system:
xdot = A x + B1 w + B2 u z = C1 x + D11 w + D12 u y = C2 x + D21 w + D22 u
An observer (u,y) --> zhat is looked for the output z.
flag='ge' no stability constraints
    flag='st' stable observer    (default) 
    flag='pp' observer with pole placement
    alfa,beta = desired location of closed loop poles  (default -1, -2)
    J=y-output to x-state injection.
    N=y-output to z-estimated output injection.
UIobs = linear system (u,y) --> zhat such that:
    The transfer function: (w,u) --> z  equals the composed transfer function:
                [0,I;        UIobs
                 Sys]
          (w,u) -----> (u,y) -----> zhat
    i.e. transfer function of system {A,B,C1,D1} equals transfer function 
    UIobs*[0,I; Sys]
Stability (resp. pole placement) requires detectability (resp. observability) of (A,C2).
Examples
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);
Authors
F.D.
| << trzeros | CACSD | unobs >> |