Scilab 5.5.1
      
      - Scilab Help
 - CACSD (Computer Aided Control Systems Design)
 - Formal representations and conversions
 - Plot and display
 - abinv
 - arhnk
 - arl2
 - arma
 - arma2p
 - arma2ss
 - armac
 - armax
 - armax1
 - arsimul
 - augment
 - balreal
 - bilin
 - bstap
 - cainv
 - calfrq
 - canon
 - ccontrg
 - cls2dls
 - colinout
 - colregul
 - cont_mat
 - contr
 - contrss
 - copfac
 - csim
 - ctr_gram
 - damp
 - dcf
 - ddp
 - dhinf
 - dhnorm
 - dscr
 - dsimul
 - dt_ility
 - dtsi
 - equil
 - equil1
 - feedback
 - findABCD
 - findAC
 - findBD
 - findBDK
 - findR
 - findx0BD
 - flts
 - fourplan
 - freq
 - freson
 - fspec
 - fspecg
 - fstabst
 - g_margin
 - gamitg
 - gcare
 - gfare
 - gfrancis
 - gtild
 - h2norm
 - h_cl
 - h_inf
 - h_inf_st
 - h_norm
 - hankelsv
 - hinf
 - imrep2ss
 - inistate
 - invsyslin
 - kpure
 - krac2
 - lcf
 - leqr
 - lft
 - lin
 - linf
 - linfn
 - linmeq
 - lqe
 - lqg
 - lqg2stan
 - lqg_ltr
 - lqr
 - ltitr
 - macglov
 - minreal
 - minss
 - mucomp
 - narsimul
 - nehari
 - noisegen
 - nyquistfrequencybounds
 - obs_gram
 - obscont
 - observer
 - obsv_mat
 - obsvss
 - p_margin
 - parrot
 - pfss
 - phasemag
 - plzr
 - pol2des
 - ppol
 - prbs_a
 - projsl
 - repfreq
 - ric_desc
 - ricc
 - riccati
 - routh_t
 - rowinout
 - rowregul
 - rtitr
 - sensi
 - sident
 - sorder
 - specfact
 - ssprint
 - st_ility
 - stabil
 - sysfact
 - syslin
 - syssize
 - time_id
 - trzeros
 - ui_observer
 - unobs
 - zeropen
 
Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
canon
canonical controllable form
Calling Sequence
[Ac,Bc,U,ind]=canon(A,B)
Arguments
- Ac,Bc
 canonical form
- U
 current basis (square nonsingular matrix)
- ind
 vector of integers, controllability indices
Description
gives the canonical controllable form of the pair (A,B).
Ac=inv(U)*A*U, Bc=inv(U)*B
The vector ind is made of the epsilon_i's indices
            of the pencil [sI - A ,  B] (decreasing order).
            For example with ind=[3,2], Ac and Bc are as follows:
[*,*,*,*,*] [*] [1,0,0,0,0] [0] Ac= [0,1,0,0,0] Bc=[0] [*,*,*,*,*] [*] [0,0,0,1,0] [0]
If (A,B) is controllable, by an appropriate choice 
            of F the * entries of Ac+Bc*F 
            can be arbitrarily set to desired values (pole placement).
Examples
A=[1,2,3,4,5; 1,0,0,0,0; 0,1,0,0,0; 6,7,8,9,0; 0,0,0,1,0]; B=[1,2; 0,0; 0,0; 2,1; 0,0]; X=rand(5,5);A=X*A*inv(X);B=X*B; //Controllable pair [Ac,Bc,U,ind]=canon(A,B); //Two indices --> ind=[3.2]; index=1;for k=1:size(ind,'*')-1,index=[index,1+sum(ind(1:k))];end Acstar=Ac(index,:);Bcstar=Bc(index,:); s=poly(0,'s'); p1=s^3+2*s^2-5*s+3;p2=(s-5)*(s-3); //p1 and p2 are desired closed-loop polynomials with degrees 3,2 c1=coeff(p1);c1=c1($-1:-1:1);c2=coeff(p2);c2=c2($-1:-1:1); Acstardesired=[-c1,0,0;0,0,0,-c2]; //Acstardesired(index,:) is companion matrix with char. pol=p1*p2 F=Bcstar\(Acstardesired-Acstar); //Feedbak gain Ac+Bc*F // Companion form spec(A+B*F/U) // F/U is the gain matrix in original basis.
See Also
| Report an issue | ||
| << calfrq | CACSD (Computer Aided Control Systems Design) | ccontrg >> |