Overview
Comment: | Allow state weighting |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
b291e8d346575ffbc8feff0d59097f14 |
User & Date: | gawthrop@users.sourceforge.net on 2005-04-20 13:50:40 |
Other Links: | branch diff | manifest | tags |
Context
2005-04-26
| ||
13:06:08 | Tidied check-in: 9969a44b61 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
2005-04-20
| ||
13:50:40 | Allow state weighting check-in: b291e8d346 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
2005-04-11
| ||
10:25:28 | Additional argument to allow arbitary U*_0 check-in: 1206de24a5 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/lib/control/PPP/ppp_are.m from [36a7ac48d8] to [61fa06621b].
︙ | ︙ | |||
9 10 11 12 13 14 15 | return endif if nargin<7 A_type = "feedback"; endif | > > > > > | > | > > > > > > | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | return endif if nargin<7 A_type = "feedback"; endif [n_x,n_u,n_y] = abcddim(A,B,C,D); # Dimensions n_q = is_square(Q); # Size of Q if n_q==0 error("Q must be square"); endif ## Steady-state Linear Quadratic solution ## using Algebraic Riccati equation (ARE) if n_q==n_y # Output weight Q_x = C'*Q*C; # Weighting on x elseif n_q==n_x # State weight Q_x = Q; else error(sprintf("Q (%ix%i) must be %ix%i or %ix%i",n_q,n_q,n_y,n_y,n_x,n_x)); endif Q_x [k, P, poles] = lqr (A, B, Q_x, R) # Algebraic Riccati solution ## Basis functions if strcmp(A_type,"companion") A_u = compan(poly(poles)); elseif strcmp(A_type,"feedback") A_u = A-B*k; else |
︙ | ︙ |