# Created by Octave 3.6.2, Mon Jun 25 21:47:37 2012 UTC # name: cache # type: cell # rows: 3 # columns: 71 # name: # type: sq_string # elements: 1 # length: 8 Anderson # name: # type: sq_string # elements: 1 # length: 64 Frequency-weighted coprime factorization controller reduction. # name: # type: sq_string # elements: 1 # length: 62 Frequency-weighted coprime factorization controller reduction. # name: # type: sq_string # elements: 1 # length: 9 BMWengine # name: # type: sq_string # elements: 1 # length: 1283 -- Function File: SYS = BMWengine () -- Function File: SYS = BMWengine ("SCALED") -- Function File: SYS = BMWengine ("UNSCALED") Model of the BMW 4-cylinder engine at ETH Zurich's control laboratory. OPERATING POINT Drosselklappenstellung alpha_DK = 10.3 Grad Saugrohrdruck p_s = 0.48 bar Motordrehzahl n = 860 U/min Lambda-Messwert lambda = 1.000 Relativer Wandfilminhalt nu = 1 INPUTS U_1 Sollsignal Drosselklappenstellung [Grad] U_2 Relative Einspritzmenge [-] U_3 Zuendzeitpunkt [Grad KW] M_L Lastdrehmoment [Nm] STATES X_1 Drosselklappenstellung [Grad] X_2 Saugrohrdruck [bar] X_3 Motordrehzahl [U/min] X_4 Messwert Lamba-Sonde [-] X_5 Relativer Wandfilminhalt [-] OUTPUTS Y_1 Motordrehzahl [U/min] Y_2 Messwert Lambda-Sonde [-] SCALING U_1N, X_1N 1 Grad U_2N, X_4N, X_5N, Y_2N 0.05 U_3N 1.6 Grad KW X_2N 0.05 bar X_3N, Y_1N 200 U/min # name: # type: sq_string # elements: 1 # length: 70 Model of the BMW 4-cylinder engine at ETH Zurich's control laboratory. # name: # type: sq_string # elements: 1 # length: 9 Boeing707 # name: # type: sq_string # elements: 1 # length: 392 -- Function File: SYS = Boeing707 () Creates a linearized state-space model of a Boeing 707-321 aircraft at V=80 m/s (M = 0.26, GA0 = -3 deg, ALPHA0 = 4 deg, KAPPA = 50 deg). System inputs: (1) thrust and (2) elevator angle. System outputs: (1) airspeed and (2) pitch angle. *Reference*: R. Brockhaus: `Flugregelung' (Flight Control), Springer, 1994. # name: # type: sq_string # elements: 1 # length: 80 Creates a linearized state-space model of a Boeing 707-321 aircraft at V=80 m/s # name: # type: sq_string # elements: 1 # length: 9 MDSSystem # name: # type: sq_string # elements: 1 # length: 156 Robust control of a mass-damper-spring system. Type `which MDSSystem' to locate, `edit MDSSystem' to open and simply `MDSSystem' to run the example file. # name: # type: sq_string # elements: 1 # length: 46 Robust control of a mass-damper-spring system. # name: # type: sq_string # elements: 1 # length: 9 Madievski # name: # type: sq_string # elements: 1 # length: 42 Frequency-weighted controller reduction. # name: # type: sq_string # elements: 1 # length: 40 Frequency-weighted controller reduction. # name: # type: sq_string # elements: 1 # length: 12 WestlandLynx # name: # type: sq_string # elements: 1 # length: 1288 -- Function File: SYS = WestlandLynx () Model of the Westland Lynx Helicopter about hover. INPUTS main rotor collective longitudinal cyclic lateral cyclic tail rotor collective STATES pitch attitude theta [rad] roll attitude phi [rad] roll rate (body-axis) p [rad/s] pitch rate (body-axis) q [rad/s] yaw rate xi [rad/s] forward velocity v_x [ft/s] lateral velocity v_y [ft/s] vertical velocity v_z [ft/s] OUTPUTS heave velocity H_dot [ft/s] pitch attitude theta [rad] roll attitude phi [rad] heading rate psi_dot [rad/s] roll rate p [rad/s] pitch rate q [rad/s] Reference: Skogestad, S. and Postlethwaite I. Multivariable Feedback Control: Analysis and Design Second Edition Wiley 2005 http://www.nt.ntnu.no/users/skoge/book/2nd_edition/matlab_m/matfiles.html # name: # type: sq_string # elements: 1 # length: 50 Model of the Westland Lynx Helicopter about hover. # name: # type: sq_string # elements: 1 # length: 4 augw # name: # type: sq_string # elements: 1 # length: 3059 -- Function File: P = augw (G, W1, W2, W3) Extend plant for stacked S/KS/T problem. Subsequently, the robust control problem can be solved by h2syn or hinfsyn. *Inputs* G LTI model of plant. W1 LTI model of performance weight. Bounds the largest singular values of sensitivity S. Model must be empty `[]', SISO or of appropriate size. W2 LTI model to penalize large control inputs. Bounds the largest singular values of KS. Model must be empty `[]', SISO or of appropriate size. W3 LTI model of robustness and noise sensitivity weight. Bounds the largest singular values of complementary sensitivity T. Model must be empty `[]', SISO or of appropriate size. All inputs must be proper/realizable. Scalars, vectors and matrices are possible instead of LTI models. *Outputs* P State-space model of augmented plant. *Block Diagram* | W1 | -W1*G | z1 = W1 r - W1 G u | 0 | W2 | z2 = W2 u P = | 0 | W3*G | z3 = W3 G u |----+-------| | I | -G | e = r - G u +------+ z1 +---------------------------------------->| W1 |-----> | +------+ | +------+ z2 | +---------------------->| W2 |-----> | | +------+ r + e | +--------+ u | +--------+ y +------+ z3 ----->(+)---+-->| K(s) |----+-->| G(s) |----+---->| W3 |-----> ^ - +--------+ +--------+ | +------+ | | +----------------------------------------+ +--------+ | |-----> z1 (p1x1) z1 = W1 e r (px1) ----->| P(s) |-----> z2 (p2x1) z2 = W2 u | |-----> z3 (p3x1) z3 = W3 y u (mx1) ----->| |-----> e (px1) e = r - y +--------+ +--------+ r ----->| |-----> z | P(s) | u +---->| |-----+ e | +--------+ | | | | +--------+ | +-----| K(s) |<----+ +--------+ Reference: Skogestad, S. and Postlethwaite I. Multivariable Feedback Control: Analysis and Design Second Edition Wiley 2005 Chapter 3.8: General Control Problem Formulation See also: h2syn, hinfsyn, mixsyn # name: # type: sq_string # elements: 1 # length: 40 Extend plant for stacked S/KS/T problem. # name: # type: sq_string # elements: 1 # length: 4 bode # name: # type: sq_string # elements: 1 # length: 890 -- Function File: [MAG, PHA, W] = bode (SYS) -- Function File: [MAG, PHA, W] = bode (SYS, W) Bode diagram of frequency response. If no output arguments are given, the response is printed on the screen. *Inputs* SYS LTI system. Must be a single-input and single-output (SISO) system. W Optional vector of frequency values. If W is not specified, it is calculated by the zeros and poles of the system. Alternatively, the cell `{wmin, wmax}' specifies a frequency range, where WMIN and WMAX denote minimum and maximum frequencies in rad/s. *Outputs* MAG Vector of magnitude. Has length of frequency vector W. PHA Vector of phase. Has length of frequency vector W. W Vector of frequency values used. See also: nichols, nyquist, sigma # name: # type: sq_string # elements: 1 # length: 35 Bode diagram of frequency response. # name: # type: sq_string # elements: 1 # length: 7 bodemag # name: # type: sq_string # elements: 1 # length: 831 -- Function File: [MAG, W] = bodemag (SYS) -- Function File: [MAG, W] = bodemag (SYS, W) Bode magnitude diagram of frequency response. If no output arguments are given, the response is printed on the screen. *Inputs* SYS LTI system. Must be a single-input and single-output (SISO) system. W Optional vector of frequency values. If W is not specified, it is calculated by the zeros and poles of the system. Alternatively, the cell `{wmin, wmax}' specifies a frequency range, where WMIN and WMAX denote minimum and maximum frequencies in rad/s. *Outputs* MAG Vector of magnitude. Has length of frequency vector W. W Vector of frequency values used. See also: bode, nichols, nyquist, sigma # name: # type: sq_string # elements: 1 # length: 45 Bode magnitude diagram of frequency response. # name: # type: sq_string # elements: 1 # length: 9 bstmodred # name: # type: sq_string # elements: 1 # length: 6097 -- Function File: [GR, INFO] = bstmodred (G, ...) -- Function File: [GR, INFO] = bstmodred (G, NR, ...) -- Function File: [GR, INFO] = bstmodred (G, OPT, ...) -- Function File: [GR, INFO] = bstmodred (G, NR, OPT, ...) Model order reduction by Balanced Stochastic Truncation (BST) method. The aim of model reduction is to find an LTI system GR of order NR (nr < n) such that the input-output behaviour of GR approximates the one from original system G. BST is a relative error method which tries to minimize -1 ||G (G-Gr)|| = min inf *Inputs* G LTI model to be reduced. NR The desired order of the resulting reduced order system GR. If not specified, NR is chosen automatically according to the description of key 'ORDER'. ... Optional pairs of keys and values. `"key1", value1, "key2", value2'. OPT Optional struct with keys as field names. Struct OPT can be created directly or by command `options'. `opt.key1 = value1, opt.key2 = value2'. *Outputs* GR Reduced order state-space model. INFO Struct containing additional information. INFO.N The order of the original system G. INFO.NS The order of the ALPHA-stable subsystem of the original system G. INFO.HSV The Hankel singular values of the phase system corresponding to the ALPHA-stable part of the original system G. The NS Hankel singular values are ordered decreasingly. INFO.NU The order of the ALPHA-unstable subsystem of both the original system G and the reduced-order system GR. INFO.NR The order of the obtained reduced order system GR. *Option Keys and Values* 'ORDER', 'NR' The desired order of the resulting reduced order system GR. If not specified, NR is the sum of NU and the number of Hankel singular values greater than `MAX(TOL1,NS*EPS)'; NR can be further reduced to ensure that `HSV(NR-NU) > HSV(NR+1-NU)'. 'METHOD' Approximation method for the H-infinity norm. Valid values corresponding to this key are: 'SR-BTA', 'B' Use the square-root Balance & Truncate method. 'BFSR-BTA', 'F' Use the balancing-free square-root Balance & Truncate method. Default method. 'SR-SPA', 'S' Use the square-root Singular Perturbation Approximation method. 'BFSR-SPA', 'P' Use the balancing-free square-root Singular Perturbation Approximation method. 'ALPHA' Specifies the ALPHA-stability boundary for the eigenvalues of the state dynamics matrix G.A. For a continuous-time system, ALPHA <= 0 is the boundary value for the real parts of eigenvalues, while for a discrete-time system, 0 <= ALPHA <= 1 represents the boundary value for the moduli of eigenvalues. The ALPHA-stability domain does not include the boundary. Default value is 0 for continuous-time systems and 1 for discrete-time systems. 'BETA' Use `[G, beta*I]' as new system G to combine absolute and relative error methods. BETA > 0 specifies the absolute/relative error weighting parameter. A large positive value of BETA favours the minimization of the absolute approximation error, while a small value of BETA is appropriate for the minimization of the relative error. BETA = 0 means a pure relative error method and can be used only if rank(G.D) = rows(G.D) which means that the feedthrough matrice must not be rank-deficient. Default value is 0. 'TOL1' If 'ORDER' is not specified, TOL1 contains the tolerance for determining the order of reduced system. For model reduction, the recommended value of TOL1 lies in the interval [0.00001, 0.001]. TOL1 < 1. If TOL1 <= 0 on entry, the used default value is TOL1 = NS*EPS, where NS is the number of ALPHA-stable eigenvalues of A and EPS is the machine precision. If 'ORDER' is specified, the value of TOL1 is ignored. 'TOL2' The tolerance for determining the order of a minimal realization of the phase system (see METHOD) corresponding to the ALPHA-stable part of the given system. The recommended value is TOL2 = NS*EPS. TOL2 <= TOL1 < 1. This value is used by default if 'TOL2' is not specified or if TOL2 <= 0 on entry. 'EQUIL', 'SCALE' Boolean indicating whether equilibration (scaling) should be performed on system G prior to order reduction. Default value is true if `G.scaled == false' and false if `G.scaled == true'. Note that for MIMO models, proper scaling of both inputs and outputs is of utmost importance. The input and output scaling can *not* be done by the equilibration option or the `prescale' command because these functions perform state transformations only. Furthermore, signals should not be scaled simply to a certain range. For all inputs (or outputs), a certain change should be of the same importance for the model. BST is often suitable to perform model reduction in order to obtain low order design models for controller synthesis. Approximation Properties: * Guaranteed stability of reduced models * Approximates simultaneously gain and phase * Preserves non-minimum phase zeros * Guaranteed a priori error bound *Algorithm* Uses SLICOT AB09HD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 69 Model order reduction by Balanced Stochastic Truncation (BST) method. # name: # type: sq_string # elements: 1 # length: 9 btaconred # name: # type: sq_string # elements: 1 # length: 6173 -- Function File: [KR, INFO] = btaconred (G, K, ...) -- Function File: [KR, INFO] = btaconred (G, K, NCR, ...) -- Function File: [KR, INFO] = btaconred (G, K, OPT, ...) -- Function File: [KR, INFO] = btaconred (G, K, NCR, OPT, ...) Controller reduction by frequency-weighted Balanced Truncation Approximation (BTA). Given a plant G and a stabilizing controller K, determine a reduced order controller KR such that the closed-loop system is stable and closed-loop performance is retained. The algorithm tries to minimize the frequency-weighted error ||V (K-Kr) W|| = min inf where V and W denote output and input weightings. *Inputs* G LTI model of the plant. It has m inputs, p outputs and n states. K LTI model of the controller. It has p inputs, m outputs and nc states. NCR The desired order of the resulting reduced order controller KR. If not specified, NCR is chosen automatically according to the description of key 'ORDER'. ... Optional pairs of keys and values. `"key1", value1, "key2", value2'. OPT Optional struct with keys as field names. Struct OPT can be created directly or by command `options'. `opt.key1 = value1, opt.key2 = value2'. *Outputs* KR State-space model of reduced order controller. INFO Struct containing additional information. INFO.NCR The order of the obtained reduced order controller KR. INFO.NCS The order of the alpha-stable part of original controller K. INFO.HSVC The Hankel singular values of the alpha-stable part of K. The NCS Hankel singular values are ordered decreasingly. *Option Keys and Values* 'ORDER', 'NCR' The desired order of the resulting reduced order controller KR. If not specified, NCR is chosen automatically such that states with Hankel singular values INFO.HSVC > TOL1 are retained. 'METHOD' Order reduction approach to be used as follows: 'SR', 'B' Use the square-root Balance & Truncate method. 'BFSR', 'F' Use the balancing-free square-root Balance & Truncate method. Default method. 'WEIGHT' Specifies the type of frequency-weighting as follows: 'NONE' No weightings are used (V = I, W = I). 'LEFT', 'OUTPUT' Use stability enforcing left (output) weighting -1 V = (I-G*K) *G , W = I 'RIGHT', 'INPUT' Use stability enforcing right (input) weighting -1 V = I , W = (I-G*K) *G 'BOTH', 'PERFORMANCE' Use stability and performance enforcing weightings -1 -1 V = (I-G*K) *G , W = (I-G*K) Default value. 'FEEDBACK' Specifies whether K is a positive or negative feedback controller: '+' Use positive feedback controller. Default value. '-' Use negative feedback controller. 'ALPHA' Specifies the ALPHA-stability boundary for the eigenvalues of the state dynamics matrix K.A. For a continuous-time controller, ALPHA <= 0 is the boundary value for the real parts of eigenvalues, while for a discrete-time controller, 0 <= ALPHA <= 1 represents the boundary value for the moduli of eigenvalues. The ALPHA-stability domain does not include the boundary. Default value is 0 for continuous-time controllers and 1 for discrete-time controllers. 'TOL1' If 'ORDER' is not specified, TOL1 contains the tolerance for determining the order of the reduced controller. For model reduction, the recommended value of TOL1 is c*info.hsvc(1), where c lies in the interval [0.00001, 0.001]. Default value is info.ncs*eps*info.hsvc(1). If 'ORDER' is specified, the value of TOL1 is ignored. 'TOL2' The tolerance for determining the order of a minimal realization of the ALPHA-stable part of the given controller. TOL2 <= TOL1. If not specified, ncs*eps*info.hsvc(1) is chosen. 'GRAM-CTRB' Specifies the choice of frequency-weighted controllability Grammian as follows: 'STANDARD' Choice corresponding to standard Enns' method [1]. Default method. 'ENHANCED' Choice corresponding to the stability enhanced modified Enns' method of [2]. 'GRAM-OBSV' Specifies the choice of frequency-weighted observability Grammian as follows: 'STANDARD' Choice corresponding to standard Enns' method [1]. Default method. 'ENHANCED' Choice corresponding to the stability enhanced modified Enns' method of [2]. 'EQUIL', 'SCALE' Boolean indicating whether equilibration (scaling) should be performed on G and K prior to order reduction. Default value is false if both `G.scaled == true, K.scaled == true' and true otherwise. Note that for MIMO models, proper scaling of both inputs and outputs is of utmost importance. The input and output scaling can *not* be done by the equilibration option or the `prescale' command because these functions perform state transformations only. Furthermore, signals should not be scaled simply to a certain range. For all inputs (or outputs), a certain change should be of the same importance for the model. *Algorithm* Uses SLICOT SB16AD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 80 Controller reduction by frequency-weighted Balanced Truncation Approximation (BT # name: # type: sq_string # elements: 1 # length: 9 btamodred # name: # type: sq_string # elements: 1 # length: 7326 -- Function File: [GR, INFO] = btamodred (G, ...) -- Function File: [GR, INFO] = btamodred (G, NR, ...) -- Function File: [GR, INFO] = btamodred (G, OPT, ...) -- Function File: [GR, INFO] = btamodred (G, NR, OPT, ...) Model order reduction by frequency weighted Balanced Truncation Approximation (BTA) method. The aim of model reduction is to find an LTI system GR of order NR (nr < n) such that the input-output behaviour of GR approximates the one from original system G. BTA is an absolute error method which tries to minimize ||G-Gr|| = min inf ||V (G-Gr) W|| = min inf where V and W denote output and input weightings. *Inputs* G LTI model to be reduced. NR The desired order of the resulting reduced order system GR. If not specified, NR is chosen automatically according to the description of key 'ORDER'. ... Optional pairs of keys and values. `"key1", value1, "key2", value2'. OPT Optional struct with keys as field names. Struct OPT can be created directly or by command `options'. `opt.key1 = value1, opt.key2 = value2'. *Outputs* GR Reduced order state-space model. INFO Struct containing additional information. INFO.N The order of the original system G. INFO.NS The order of the ALPHA-stable subsystem of the original system G. INFO.HSV The Hankel singular values of the ALPHA-stable part of the original system G, ordered decreasingly. INFO.NU The order of the ALPHA-unstable subsystem of both the original system G and the reduced-order system GR. INFO.NR The order of the obtained reduced order system GR. *Option Keys and Values* 'ORDER', 'NR' The desired order of the resulting reduced order system GR. If not specified, NR is chosen automatically such that states with Hankel singular values INFO.HSV > TOL1 are retained. 'LEFT', 'OUTPUT' LTI model of the left/output frequency weighting V. Default value is an identity matrix. 'RIGHT', 'INPUT' LTI model of the right/input frequency weighting W. Default value is an identity matrix. 'METHOD' Approximation method for the L-infinity norm to be used as follows: 'SR', 'B' Use the square-root Balance & Truncate method. 'BFSR', 'F' Use the balancing-free square-root Balance & Truncate method. Default method. 'ALPHA' Specifies the ALPHA-stability boundary for the eigenvalues of the state dynamics matrix G.A. For a continuous-time system, ALPHA <= 0 is the boundary value for the real parts of eigenvalues, while for a discrete-time system, 0 <= ALPHA <= 1 represents the boundary value for the moduli of eigenvalues. The ALPHA-stability domain does not include the boundary. Default value is 0 for continuous-time systems and 1 for discrete-time systems. 'TOL1' If 'ORDER' is not specified, TOL1 contains the tolerance for determining the order of the reduced model. For model reduction, the recommended value of TOL1 is c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. Default value is info.ns*eps*info.hsv(1). If 'ORDER' is specified, the value of TOL1 is ignored. 'TOL2' The tolerance for determining the order of a minimal realization of the ALPHA-stable part of the given model. TOL2 <= TOL1. If not specified, ns*eps*info.hsv(1) is chosen. 'GRAM-CTRB' Specifies the choice of frequency-weighted controllability Grammian as follows: 'STANDARD' Choice corresponding to a combination method [4] of the approaches of Enns [1] and Lin-Chiu [2,3]. Default method. 'ENHANCED' Choice corresponding to the stability enhanced modified combination method of [4]. 'GRAM-OBSV' Specifies the choice of frequency-weighted observability Grammian as follows: 'STANDARD' Choice corresponding to a combination method [4] of the approaches of Enns [1] and Lin-Chiu [2,3]. Default method. 'ENHANCED' Choice corresponding to the stability enhanced modified combination method of [4]. 'ALPHA-CTRB' Combination method parameter for defining the frequency-weighted controllability Grammian. abs(alphac) <= 1. If alphac = 0, the choice of Grammian corresponds to the method of Enns [1], while if alphac = 1, the choice of Grammian corresponds to the method of Lin and Chiu [2,3]. Default value is 0. 'ALPHA-OBSV' Combination method parameter for defining the frequency-weighted observability Grammian. abs(alphao) <= 1. If alphao = 0, the choice of Grammian corresponds to the method of Enns [1], while if alphao = 1, the choice of Grammian corresponds to the method of Lin and Chiu [2,3]. Default value is 0. 'EQUIL', 'SCALE' Boolean indicating whether equilibration (scaling) should be performed on system G prior to order reduction. This is done by state transformations. Default value is true if `G.scaled == false' and false if `G.scaled == true'. Note that for MIMO models, proper scaling of both inputs and outputs is of utmost importance. The input and output scaling can *not* be done by the equilibration option or the `prescale' command because these functions perform state transformations only. Furthermore, signals should not be scaled simply to a certain range. For all inputs (or outputs), a certain change should be of the same importance for the model. Approximation Properties: * Guaranteed stability of reduced models * Lower guaranteed error bound * Guaranteed a priori error bound *References* [1] Enns, D. Model reduction with balanced realizations: An error bound and a frequency weighted generalization. Proc. 23-th CDC, Las Vegas, pp. 127-132, 1984. [2] Lin, C.-A. and Chiu, T.-Y. Model reduction via frequency-weighted balanced realization. Control Theory and Advanced Technology, vol. 8, pp. 341-351, 1992. [3] Sreeram, V., Anderson, B.D.O and Madievski, A.G. New results on frequency weighted balanced reduction technique. Proc. ACC, Seattle, Washington, pp. 4004-4009, 1995. [4] Varga, A. and Anderson, B.D.O. Square-root balancing-free methods for the frequency-weighted balancing related model reduction. (report in preparation) *Algorithm* Uses SLICOT AB09ID by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 80 Model order reduction by frequency weighted Balanced Truncation Approximation (B # name: # type: sq_string # elements: 1 # length: 4 care # name: # type: sq_string # elements: 1 # length: 1627 -- Function File: [X, L, G] = care (A, B, Q, R) -- Function File: [X, L, G] = care (A, B, Q, R, S) -- Function File: [X, L, G] = care (A, B, Q, R, [], E) -- Function File: [X, L, G] = care (A, B, Q, R, S, E) Solve continuous-time algebraic Riccati equation (ARE). *Inputs* A Real matrix (n-by-n). B Real matrix (n-by-m). Q Real matrix (n-by-n). R Real matrix (m-by-m). S Optional real matrix (n-by-m). If S is not specified, a zero matrix is assumed. E Optional descriptor matrix (n-by-n). If E is not specified, an identity matrix is assumed. *Outputs* X Unique stabilizing solution of the continuous-time Riccati equation (n-by-n). L Closed-loop poles (n-by-1). G Corresponding gain matrix (m-by-n). *Equations* -1 A'X + XA - XB R B'X + Q = 0 -1 A'X + XA - (XB + S) R (B'X + S') + Q = 0 -1 G = R B'X -1 G = R (B'X + S') L = eig (A - B*G) -1 A'XE + E'XA - E'XB R B'XE + Q = 0 -1 A'XE + E'XA - (E'XB + S) R (B'XE + S') + Q = 0 -1 G = R B'XE -1 G = R (B'XE + S) L = eig (A - B*G, E) *Algorithm* Uses SLICOT SB02OD and SG02AD by courtesy of NICONET e.V. (http://www.slicot.org) See also: dare, lqr, dlqr, kalman # name: # type: sq_string # elements: 1 # length: 55 Solve continuous-time algebraic Riccati equation (ARE). # name: # type: sq_string # elements: 1 # length: 8 cfconred # name: # type: sq_string # elements: 1 # length: 4348 -- Function File: [KR, INFO] = cfconred (G, F, L, ...) -- Function File: [KR, INFO] = cfconred (G, F, L, NCR, ...) -- Function File: [KR, INFO] = cfconred (G, F, L, OPT, ...) -- Function File: [KR, INFO] = cfconred (G, F, L, NCR, OPT, ...) Reduction of state-feedback-observer based controller by coprime factorization (CF). Given a plant G, state feedback gain F and full observer gain L, determine a reduced order controller KR. *Inputs* G LTI model of the open-loop plant (A,B,C,D). It has m inputs, p outputs and n states. F Stabilizing state feedback matrix (m-by-n). L Stabilizing observer gain matrix (n-by-p). NCR The desired order of the resulting reduced order controller KR. If not specified, NCR is chosen automatically according to the description of key 'ORDER'. ... Optional pairs of keys and values. `"key1", value1, "key2", value2'. OPT Optional struct with keys as field names. Struct OPT can be created directly or by command `options'. `opt.key1 = value1, opt.key2 = value2'. *Outputs* KR State-space model of reduced order controller. INFO Struct containing additional information. INFO.HSV The Hankel singular values of the extended system?!?. The N Hankel singular values are ordered decreasingly. INFO.NCR The order of the obtained reduced order controller KR. *Option Keys and Values* 'ORDER', 'NCR' The desired order of the resulting reduced order controller KR. If not specified, NCR is chosen automatically such that states with Hankel singular values INFO.HSV > TOL1 are retained. 'METHOD' Order reduction approach to be used as follows: 'SR-BTA', 'B' Use the square-root Balance & Truncate method. 'BFSR-BTA', 'F' Use the balancing-free square-root Balance & Truncate method. Default method. 'SR-SPA', 'S' Use the square-root Singular Perturbation Approximation method. 'BFSR-SPA', 'P' Use the balancing-free square-root Singular Perturbation Approximation method. 'CF' Specifies whether left or right coprime factorization is to be used as follows: 'LEFT', 'L' Use left coprime factorization. Default method. 'RIGHT', 'R' Use right coprime factorization. 'FEEDBACK' Specifies whether F and L are fed back positively or negatively: '+' A+BK and A+LC are both Hurwitz matrices. '-' A-BK and A-LC are both Hurwitz matrices. Default value. 'TOL1' If 'ORDER' is not specified, TOL1 contains the tolerance for determining the order of the reduced system. For model reduction, the recommended value of TOL1 is c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. Default value is n*eps*info.hsv(1). If 'ORDER' is specified, the value of TOL1 is ignored. 'TOL2' The tolerance for determining the order of a minimal realization of the coprime factorization controller. TOL2 <= TOL1. If not specified, n*eps*info.hsv(1) is chosen. 'EQUIL', 'SCALE' Boolean indicating whether equilibration (scaling) should be performed on system G prior to order reduction. Default value is true if `G.scaled == false' and false if `G.scaled == true'. Note that for MIMO models, proper scaling of both inputs and outputs is of utmost importance. The input and output scaling can *not* be done by the equilibration option or the `prescale' command because these functions perform state transformations only. Furthermore, signals should not be scaled simply to a certain range. For all inputs (or outputs), a certain change should be of the same importance for the model. *Algorithm* Uses SLICOT SB16BD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 80 Reduction of state-feedback-observer based controller by coprime factorization ( # name: # type: sq_string # elements: 1 # length: 5 covar # name: # type: sq_string # elements: 1 # length: 319 -- Function File: [P, Q] = covar (SYS, W) Return the steady-state covariance. *Inputs* SYS LTI model. W Intensity of Gaussian white noise inputs which drive SYS. *Outputs* P Output covariance. Q State covariance. See also: lyap, dlyap # name: # type: sq_string # elements: 1 # length: 35 Return the steady-state covariance. # name: # type: sq_string # elements: 1 # length: 4 ctrb # name: # type: sq_string # elements: 1 # length: 390 -- Function File: CO = ctrb (SYS) -- Function File: CO = ctrb (A, B) Return controllability matrix. *Inputs* SYS LTI model. A State transition matrix (n-by-n). B Input matrix (n-by-m). *Outputs* CO Controllability matrix. *Equation* 2 n-1 Co = [ B AB A B ... A B ] # name: # type: sq_string # elements: 1 # length: 30 Return controllability matrix. # name: # type: sq_string # elements: 1 # length: 5 ctrbf # name: # type: sq_string # elements: 1 # length: 958 -- Function File: [SYSBAR, T, K] = ctrbf (SYS) -- Function File: [SYSBAR, T, K] = ctrbf (SYS, TOL) -- Function File: [ABAR, BBAR, CBAR, T, K] = ctrbf (A, B, C) -- Function File: [ABAR, BBAR, CBAR, T, K] = ctrbf (A, B, C, TOL) If Co=ctrb(A,B) has rank r <= n = SIZE(A,1), then there is a similarity transformation Tc such that Tc = [t1 t2] where t1 is the controllable subspace and t2 is orthogonal to t1 Abar = Tc \ A * Tc , Bbar = Tc \ B , Cbar = C * Tc and the transformed system has the form | Ac A12| | Bc | Abar = |----------|, Bbar = | ---|, Cbar = [Cc | Cnc]. | 0 Anc| | 0 | where (Ac,Bc) is controllable, and Cc(sI-Ac)^(-1)Bc = C(sI-A)^(-1)B. and the system is stabilizable if Anc has no eigenvalues in the right half plane. The last output K is a vector of length n containing the number of controllable states. # name: # type: sq_string # elements: 1 # length: 80 If Co=ctrb(A,B) has rank r <= n = SIZE(A,1), then there is a similarity transfor # name: # type: sq_string # elements: 1 # length: 4 dare # name: # type: sq_string # elements: 1 # length: 1786 -- Function File: [X, L, G] = dare (A, B, Q, R) -- Function File: [X, L, G] = dare (A, B, Q, R, S) -- Function File: [X, L, G] = dare (A, B, Q, R, [], E) -- Function File: [X, L, G] = dare (A, B, Q, R, S, E) Solve discrete-time algebraic Riccati equation (ARE). *Inputs* A Real matrix (n-by-n). B Real matrix (n-by-m). Q Real matrix (n-by-n). R Real matrix (m-by-m). S Optional real matrix (n-by-m). If S is not specified, a zero matrix is assumed. E Optional descriptor matrix (n-by-n). If E is not specified, an identity matrix is assumed. *Outputs* X Unique stabilizing solution of the discrete-time Riccati equation (n-by-n). L Closed-loop poles (n-by-1). G Corresponding gain matrix (m-by-n). *Equations* -1 A'XA - X - A'XB (B'XB + R) B'XA + Q = 0 -1 A'XA - X - (A'XB + S) (B'XB + R) (B'XA + S') + Q = 0 -1 G = (B'XB + R) B'XA -1 G = (B'XB + R) (B'XA + S') L = eig (A - B*G) -1 A'XA - E'XE - A'XB (B'XB + R) B'XA + Q = 0 -1 A'XA - E'XE - (A'XB + S) (B'XB + R) (B'XA + S') + Q = 0 -1 G = (B'XB + R) B'XA -1 G = (B'XB + R) (B'XA + S') L = eig (A - B*G, E) *Algorithm* Uses SLICOT SB02OD and SG02AD by courtesy of NICONET e.V. (http://www.slicot.org) See also: care, lqr, dlqr, kalman # name: # type: sq_string # elements: 1 # length: 53 Solve discrete-time algebraic Riccati equation (ARE). # name: # type: sq_string # elements: 1 # length: 4 dlqe # name: # type: sq_string # elements: 1 # length: 1695 -- Function File: [M, P, Z, E] = dlqe (A, G, C, Q, R) -- Function File: [M, P, Z, E] = dlqe (A, G, C, Q, R, S) -- Function File: [M, P, Z, E] = dlqe (A, [], C, Q, R) -- Function File: [M, P, Z, E] = dlqe (A, [], C, Q, R, S) Kalman filter for discrete-time systems. x[k] = Ax[k] + Bu[k] + Gw[k] (State equation) y[k] = Cx[k] + Du[k] + v[k] (Measurement Equation) E(w) = 0, E(v) = 0, cov(w) = Q, cov(v) = R, cov(w,v) = S *Inputs* A State transition matrix of discrete-time system (n-by-n). G Process noise matrix of discrete-time system (n-by-g). If G is empty `[]', an identity matrix is assumed. C Measurement matrix of discrete-time system (p-by-n). Q Process noise covariance matrix (g-by-g). R Measurement noise covariance matrix (p-by-p). S Optional cross term covariance matrix (g-by-p), s = cov(w,v). If S is empty `[]' or not specified, a zero matrix is assumed. *Outputs* M Kalman filter gain matrix (n-by-p). P Unique stabilizing solution of the discrete-time Riccati equation (n-by-n). Symmetric matrix. Z Error covariance (n-by-n), cov(x(k|k)-x) E Closed-loop poles (n-by-1). *Equations* x[k|k] = x[k|k-1] + M(y[k] - Cx[k|k-1] - Du[k]) x[k+1|k] = Ax[k|k] + Bu[k] for S=0 x[k+1|k] = Ax[k|k] + Bu[k] + G*S*(C*P*C' + R)^-1*(y[k] - C*x[k|k-1]) for non-zero S E = eig(A - A*M*C) for S=0 E = eig(A - A*M*C - G*S*(C*P*C' + Rv)^-1*C) for non-zero S See also: dare, care, dlqr, lqr, lqe # name: # type: sq_string # elements: 1 # length: 40 Kalman filter for discrete-time systems. # name: # type: sq_string # elements: 1 # length: 4 dlqr # name: # type: sq_string # elements: 1 # length: 1374 -- Function File: [G, X, L] = dlqr (SYS, Q, R) -- Function File: [G, X, L] = dlqr (SYS, Q, R, S) -- Function File: [G, X, L] = dlqr (A, B, Q, R) -- Function File: [G, X, L] = dlqr (A, B, Q, R, S) -- Function File: [G, X, L] = dlqr (A, B, Q, R, [], E) -- Function File: [G, X, L] = dlqr (A, B, Q, R, S, E) Linear-quadratic regulator for discrete-time systems. *Inputs* SYS Continuous or discrete-time LTI model (p-by-m, n states). A State transition matrix of discrete-time system (n-by-n). B Input matrix of discrete-time system (n-by-m). Q State weighting matrix (n-by-n). R Input weighting matrix (m-by-m). S Optional cross term matrix (n-by-m). If S is not specified, a zero matrix is assumed. E Optional descriptor matrix (n-by-n). If E is not specified, an identity matrix is assumed. *Outputs* G State feedback matrix (m-by-n). X Unique stabilizing solution of the discrete-time Riccati equation (n-by-n). L Closed-loop poles (n-by-1). *Equations* x[k+1] = A x[k] + B u[k], x[0] = x0 inf J(x0) = SUM (x' Q x + u' R u + 2 x' S u) k=0 L = eig (A - B*G) See also: dare, care, lqr # name: # type: sq_string # elements: 1 # length: 53 Linear-quadratic regulator for discrete-time systems. # name: # type: sq_string # elements: 1 # length: 5 dlyap # name: # type: sq_string # elements: 1 # length: 527 -- Function File: X = dlyap (A, B) -- Function File: X = dlyap (A, B, C) -- Function File: X = dlyap (A, B, [], E) Solve discrete-time Lyapunov or Sylvester equations. *Equations* AXA' - X + B = 0 (Lyapunov Equation) AXB' - X + C = 0 (Sylvester Equation) AXA' - EXE' + B = 0 (Generalized Lyapunov Equation) *Algorithm* Uses SLICOT SB03MD, SB04QD and SG03AD by courtesy of NICONET e.V. (http://www.slicot.org) See also: dlyapchol, lyap, lyapchol # name: # type: sq_string # elements: 1 # length: 52 Solve discrete-time Lyapunov or Sylvester equations. # name: # type: sq_string # elements: 1 # length: 9 dlyapchol # name: # type: sq_string # elements: 1 # length: 478 -- Function File: U = dlyapchol (A, B) -- Function File: U = dlyapchol (A, B, E) Compute Cholesky factor of discrete-time Lyapunov equations. *Equations* A U' U A' - U' U + B B' = 0 (Lyapunov Equation) A U' U A' - E U' U E' + B B' = 0 (Generalized Lyapunov Equation) *Algorithm* Uses SLICOT SB03OD and SG03BD by courtesy of NICONET e.V. (http://www.slicot.org) See also: dlyap, lyap, lyapchol # name: # type: sq_string # elements: 1 # length: 60 Compute Cholesky factor of discrete-time Lyapunov equations. # name: # type: sq_string # elements: 1 # length: 3 dss # name: # type: sq_string # elements: 1 # length: 935 -- Function File: SYS = dss (SYS) -- Function File: SYS = dss (D) -- Function File: SYS = dss (A, B, C, D, E, ...) -- Function File: SYS = dss (A, B, C, D, E, TSAM, ...) Create or convert to descriptor state-space model. *Inputs* SYS LTI model to be converted to state-space. A State transition matrix (n-by-n). B Input matrix (n-by-m). C Measurement matrix (p-by-n). D Feedthrough matrix (p-by-m). E Descriptor matrix (n-by-n). TSAM Sampling time in seconds. If TSAM is not specified, a continuous-time model is assumed. ... Optional pairs of properties and values. Type `set (dss)' for more information. *Outputs* SYS Descriptor state-space model. *Equations* . E x = A x + B u y = C x + D u See also: ss, tf # name: # type: sq_string # elements: 1 # length: 50 Create or convert to descriptor state-space model. # name: # type: sq_string # elements: 1 # length: 5 estim # name: # type: sq_string # elements: 1 # length: 654 -- Function File: EST = estim (SYS, L) -- Function File: EST = estim (SYS, L, SENSORS, KNOWN) Return state estimator for a given estimator gain. *Inputs* SYS LTI model. L State feedback matrix. SENSORS Indices of measured output signals y from SYS. If omitted, all outputs are measured. KNOWN Indices of known input signals u (deterministic) to SYS. All other inputs to SYS are assumed stochastic. If argument KNOWN is omitted, no inputs u are known. *Outputs* EST State-space model of estimator. See also: kalman, place # name: # type: sq_string # elements: 1 # length: 50 Return state estimator for a given estimator gain. # name: # type: sq_string # elements: 1 # length: 4 filt # name: # type: sq_string # elements: 1 # length: 1602 -- Function File: SYS = filt (NUM, DEN, ...) -- Function File: SYS = filt (NUM, DEN, TSAM, ...) Create discrete-time transfer function model from data in DSP format. *Inputs* NUM Numerator or cell of numerators. Each numerator must be a row vector containing the coefficients of the polynomial in ascending powers of z^-1. num{i,j} contains the numerator polynomial from input j to output i. In the SISO case, a single vector is accepted as well. DEN Denominator or cell of denominators. Each denominator must be a row vector containing the coefficients of the polynomial in ascending powers of z^-1. den{i,j} contains the denominator polynomial from input j to output i. In the SISO case, a single vector is accepted as well. TSAM Sampling time in seconds. If TSAM is not specified, default value -1 (unspecified) is taken. ... Optional pairs of properties and values. Type `set (filt)' for more information. *Outputs* SYS Discrete-time transfer function model. *Example* 3 z^-1 H(z^-1) = ------------------- 1 + 4 z^-1 + 2 z^-2 octave:1> H = filt ([0, 3], [1, 4, 2]) Transfer function 'H' from input 'u1' to output ... 3 z^-1 y1: ------------------- 1 + 4 z^-1 + 2 z^-2 Sampling time: unspecified Discrete-time model. See also: tf # name: # type: sq_string # elements: 1 # length: 69 Create discrete-time transfer function model from data in DSP format. # name: # type: sq_string # elements: 1 # length: 6 fitfrd # name: # type: sq_string # elements: 1 # length: 1168 -- Function File: [SYS, N] = fitfrd (DAT, N) -- Function File: [SYS, N] = fitfrd (DAT, N, FLAG) Fit frequency response data with a state-space system. If requested, the returned system is stable and minimum-phase. *Inputs* DAT LTI model containing frequency response data of a SISO system. N The desired order of the system to be fitted. `n <= length(dat.w)'. FLAG The flag controls whether the returned system is stable and minimum-phase. 0 The system zeros and poles are not constrained. Default value. 1 The system zeros and poles will have negative real parts in the continuous-time case, or moduli less than 1 in the discrete-time case. *Outputs* SYS State-space model of order N, fitted to frequency response data DAT. N The order of the obtained system. The value of N could only be modified if inputs `n > 0' and `flag = 1'. *Algorithm* Uses SLICOT SB10YD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 54 Fit frequency response data with a state-space system. # name: # type: sq_string # elements: 1 # length: 10 fwcfconred # name: # type: sq_string # elements: 1 # length: 3221 -- Function File: [KR, INFO] = fwcfconred (G, F, L, ...) -- Function File: [KR, INFO] = fwcfconred (G, F, L, NCR, ...) -- Function File: [KR, INFO] = fwcfconred (G, F, L, OPT, ...) -- Function File: [KR, INFO] = fwcfconred (G, F, L, NCR, OPT, ...) Reduction of state-feedback-observer based controller by frequency-weighted coprime factorization (FW CF). Given a plant G, state feedback gain F and full observer gain L, determine a reduced order controller KR by using stability enforcing frequency weights. *Inputs* G LTI model of the open-loop plant (A,B,C,D). It has m inputs, p outputs and n states. F Stabilizing state feedback matrix (m-by-n). L Stabilizing observer gain matrix (n-by-p). NCR The desired order of the resulting reduced order controller KR. If not specified, NCR is chosen automatically according to the description of key 'ORDER'. ... Optional pairs of keys and values. `"key1", value1, "key2", value2'. OPT Optional struct with keys as field names. Struct OPT can be created directly or by command `options'. `opt.key1 = value1, opt.key2 = value2'. *Outputs* KR State-space model of reduced order controller. INFO Struct containing additional information. INFO.HSV The Hankel singular values of the extended system?!?. The N Hankel singular values are ordered decreasingly. INFO.NCR The order of the obtained reduced order controller KR. *Option Keys and Values* 'ORDER', 'NCR' The desired order of the resulting reduced order controller KR. If not specified, NCR is chosen automatically such that states with Hankel singular values INFO.HSV > TOL1 are retained. 'METHOD' Order reduction approach to be used as follows: 'SR', 'B' Use the square-root Balance & Truncate method. 'BFSR', 'F' Use the balancing-free square-root Balance & Truncate method. Default method. 'CF' Specifies whether left or right coprime factorization is to be used as follows: 'LEFT', 'L' Use left coprime factorization. 'RIGHT', 'R' Use right coprime factorization. Default method. 'FEEDBACK' Specifies whether F and L are fed back positively or negatively: '+' A+BK and A+LC are both Hurwitz matrices. '-' A-BK and A-LC are both Hurwitz matrices. Default value. 'TOL1' If 'ORDER' is not specified, TOL1 contains the tolerance for determining the order of the reduced system. For model reduction, the recommended value of TOL1 is c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. Default value is n*eps*info.hsv(1). If 'ORDER' is specified, the value of TOL1 is ignored. *Algorithm* Uses SLICOT SB16CD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 80 Reduction of state-feedback-observer based controller by frequency-weighted copr # name: # type: sq_string # elements: 1 # length: 6 gensig # name: # type: sq_string # elements: 1 # length: 802 -- Function File: [U, T] = gensig (SIGTYPE, TAU) -- Function File: [U, T] = gensig (SIGTYPE, TAU, TFINAL) -- Function File: [U, T] = gensig (SIGTYPE, TAU, TFINAL, TSAM) Generate periodic signal. Useful in combination with lsim. *Inputs* SIGTYPE = "SIN" Sine wave. SIGTYPE = "COS" Cosine wave. SIGTYPE = "SQUARE" Square wave. SIGTYPE = "PULSE" Periodic pulse. TAU Duration of one period in seconds. TFINAL Optional duration of the signal in seconds. Default duration is 5 periods. TSAM Optional sampling time in seconds. Default spacing is tau/64. *Outputs* U Vector of signal values. T Time vector of the signal. See also: lsim # name: # type: sq_string # elements: 1 # length: 25 Generate periodic signal. # name: # type: sq_string # elements: 1 # length: 4 gram # name: # type: sq_string # elements: 1 # length: 462 -- Function File: W = gram (SYS, MODE) -- Function File: WC = gram (A, B) `gram (SYS, "c")' returns the controllability gramian of the (continuous- or discrete-time) system SYS. `gram (SYS, "o")' returns the observability gramian of the (continuous- or discrete-time) system SYS. `gram (A, B)' returns the controllability gramian WC of the continuous-time system dx/dt = a x + b u; i.e., WC satisfies a Wc + m Wc' + b b' = 0. # name: # type: sq_string # elements: 1 # length: 80 `gram (SYS, "c")' returns the controllability gramian of the (continuous- or dis # name: # type: sq_string # elements: 1 # length: 5 h2syn # name: # type: sq_string # elements: 1 # length: 1997 -- Function File: [K, N, GAMMA, RCOND] = h2syn (P, NMEAS, NCON) H-2 control synthesis for LTI plant. *Inputs* P Generalized plant. Must be a proper/realizable LTI model. NMEAS Number of measured outputs v. The last NMEAS outputs of P are connected to the inputs of controller K. The remaining outputs z (indices 1 to p-nmeas) are used to calculate the H-2 norm. NCON Number of controlled inputs u. The last NCON inputs of P are connected to the outputs of controller K. The remaining inputs w (indices 1 to m-ncon) are excited by a harmonic test signal. *Outputs* K State-space model of the H-2 optimal controller. N State-space model of the lower LFT of P and K. GAMMA H-2 norm of N. RCOND Vector RCOND contains estimates of the reciprocal condition numbers of the matrices which are to be inverted and estimates of the reciprocal condition numbers of the Riccati equations which have to be solved during the computation of the controller K. For details, see the description of the corresponding SLICOT algorithm. *Block Diagram* gamma = min||N(K)|| N = lft (P, K) K 2 +--------+ w ----->| |-----> z | P(s) | u +---->| |-----+ v | +--------+ | | | | +--------+ | +-----| K(s) |<----+ +--------+ +--------+ w ----->| N(s) |-----> z +--------+ *Algorithm* Uses SLICOT SB10HD and SB10ED by courtesy of NICONET e.V. (http://www.slicot.org) See also: augw, lqr, dlqr, kalman # name: # type: sq_string # elements: 1 # length: 36 H-2 control synthesis for LTI plant. # name: # type: sq_string # elements: 1 # length: 7 hinfsyn # name: # type: sq_string # elements: 1 # length: 2269 -- Function File: [K, N, GAMMA, RCOND] = hinfsyn (P, NMEAS, NCON) -- Function File: [K, N, GAMMA, RCOND] = hinfsyn (P, NMEAS, NCON, GMAX) H-infinity control synthesis for LTI plant. *Inputs* P Generalized plant. Must be a proper/realizable LTI model. NMEAS Number of measured outputs v. The last NMEAS outputs of P are connected to the inputs of controller K. The remaining outputs z (indices 1 to p-nmeas) are used to calculate the H-infinity norm. NCON Number of controlled inputs u. The last NCON inputs of P are connected to the outputs of controller K. The remaining inputs w (indices 1 to m-ncon) are excited by a harmonic test signal. GMAX The maximum value of the H-infinity norm of N. It is assumed that GMAX is sufficiently large so that the controller is admissible. *Outputs* K State-space model of the H-infinity (sub-)optimal controller. N State-space model of the lower LFT of P and K. GAMMA L-infinity norm of N. RCOND Vector RCOND contains estimates of the reciprocal condition numbers of the matrices which are to be inverted and estimates of the reciprocal condition numbers of the Riccati equations which have to be solved during the computation of the controller K. For details, see the description of the corresponding SLICOT algorithm. *Block Diagram* gamma = min||N(K)|| N = lft (P, K) K inf +--------+ w ----->| |-----> z | P(s) | u +---->| |-----+ v | +--------+ | | | | +--------+ | +-----| K(s) |<----+ +--------+ +--------+ w ----->| N(s) |-----> z +--------+ *Algorithm* Uses SLICOT SB10FD and SB10DD by courtesy of NICONET e.V. (http://www.slicot.org) See also: augw, mixsyn # name: # type: sq_string # elements: 1 # length: 43 H-infinity control synthesis for LTI plant. # name: # type: sq_string # elements: 1 # length: 9 hnamodred # name: # type: sq_string # elements: 1 # length: 6621 -- Function File: [GR, INFO] = hnamodred (G, ...) -- Function File: [GR, INFO] = hnamodred (G, NR, ...) -- Function File: [GR, INFO] = hnamodred (G, OPT, ...) -- Function File: [GR, INFO] = hnamodred (G, NR, OPT, ...) Model order reduction by frequency weighted optimal Hankel-norm (HNA) method. The aim of model reduction is to find an LTI system GR of order NR (nr < n) such that the input-output behaviour of GR approximates the one from original system G. HNA is an absolute error method which tries to minimize ||G-Gr|| = min H ||V (G-Gr) W|| = min H where V and W denote output and input weightings. *Inputs* G LTI model to be reduced. NR The desired order of the resulting reduced order system GR. If not specified, NR is chosen automatically according to the description of key "ORDER". ... Optional pairs of keys and values. `"key1", value1, "key2", value2'. OPT Optional struct with keys as field names. Struct OPT can be created directly or by command `options'. `opt.key1 = value1, opt.key2 = value2'. *Outputs* GR Reduced order state-space model. INFO Struct containing additional information. INFO.N The order of the original system G. INFO.NS The order of the ALPHA-stable subsystem of the original system G. INFO.HSV The Hankel singular values corresponding to the projection `op(V)*G1*op(W)', where G1 denotes the ALPHA-stable part of the original system G. The NS Hankel singular values are ordered decreasingly. INFO.NU The order of the ALPHA-unstable subsystem of both the original system G and the reduced-order system GR. INFO.NR The order of the obtained reduced order system GR. *Option Keys and Values* 'ORDER', 'NR' The desired order of the resulting reduced order system GR. If not specified, NR is the sum of INFO.NU and the number of Hankel singular values greater than `max(tol1, ns*eps*info.hsv(1)'; 'METHOD' Specifies the computational approach to be used. Valid values corresponding to this key are: 'DESCRIPTOR' Use the inverse free descriptor system approach. 'STANDARD' Use the inversion based standard approach. 'AUTO' Switch automatically to the inverse free descriptor approach in case of badly conditioned feedthrough matrices in V or W. Default method. 'LEFT', 'V' LTI model of the left/output frequency weighting. The weighting must be antistable. || V (G-Gr) . || = min H 'RIGHT', 'W' LTI model of the right/input frequency weighting. The weighting must be antistable. || . (G-Gr) W || = min H 'LEFT-INV', 'INV-V' LTI model of the left/output frequency weighting. The weighting must have only antistable zeros. || inv(V) (G-Gr) . || = min H 'RIGHT-INV', 'INV-W' LTI model of the right/input frequency weighting. The weighting must have only antistable zeros. || . (G-Gr) inv(W) || = min H 'LEFT-CONJ', 'CONJ-V' LTI model of the left/output frequency weighting. The weighting must be stable. || V (G-Gr) . || = min H 'RIGHT-CONJ', 'CONJ-W' LTI model of the right/input frequency weighting. The weighting must be stable. || . (G-Gr) W || = min H 'LEFT-CONJ-INV', 'CONJ-INV-V' LTI model of the left/output frequency weighting. The weighting must be minimum-phase. || V (G-Gr) . || = min H 'RIGHT-CONJ-INV', 'CONJ-INV-W' LTI model of the right/input frequency weighting. The weighting must be minimum-phase. || . (G-Gr) W || = min H 'ALPHA' Specifies the ALPHA-stability boundary for the eigenvalues of the state dynamics matrix G.A. For a continuous-time system, ALPHA <= 0 is the boundary value for the real parts of eigenvalues, while for a discrete-time system, 0 <= ALPHA <= 1 represents the boundary value for the moduli of eigenvalues. The ALPHA-stability domain does not include the boundary. Default value is 0 for continuous-time systems and 1 for discrete-time systems. 'TOL1' If 'ORDER' is not specified, TOL1 contains the tolerance for determining the order of the reduced model. For model reduction, the recommended value of TOL1 is c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. TOL1 < 1. If 'ORDER' is specified, the value of TOL1 is ignored. 'TOL2' The tolerance for determining the order of a minimal realization of the ALPHA-stable part of the given model. TOL2 <= TOL1 < 1. If not specified, ns*eps*info.hsv(1) is chosen. 'EQUIL', 'SCALE' Boolean indicating whether equilibration (scaling) should be performed on system G prior to order reduction. Default value is true if `G.scaled == false' and false if `G.scaled == true'. Note that for MIMO models, proper scaling of both inputs and outputs is of utmost importance. The input and output scaling can *not* be done by the equilibration option or the `prescale' command because these functions perform state transformations only. Furthermore, signals should not be scaled simply to a certain range. For all inputs (or outputs), a certain change should be of the same importance for the model. Approximation Properties: * Guaranteed stability of reduced models * Lower guaranteed error bound * Guaranteed a priori error bound *Algorithm* Uses SLICOT AB09JD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 77 Model order reduction by frequency weighted optimal Hankel-norm (HNA) method. # name: # type: sq_string # elements: 1 # length: 4 hsvd # name: # type: sq_string # elements: 1 # length: 403 -- Function File: HSV = hsvd (SYS) -- Function File: HSV = hsvd (SYS, "OFFSET", OFFSET) -- Function File: HSV = hsvd (SYS, "ALPHA", ALPHA) Hankel singular values of the stable part of an LTI model. If no output arguments are given, the Hankel singular values are displayed in a plot. *Algorithm* Uses SLICOT AB13AD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 58 Hankel singular values of the stable part of an LTI model. # name: # type: sq_string # elements: 1 # length: 7 impulse # name: # type: sq_string # elements: 1 # length: 1247 -- Function File: [Y, T, X] = impulse (SYS) -- Function File: [Y, T, X] = impulse (SYS, T) -- Function File: [Y, T, X] = impulse (SYS, TFINAL) -- Function File: [Y, T, X] = impulse (SYS, TFINAL, DT) Impulse response of LTI system. If no output arguments are given, the response is printed on the screen. *Inputs* SYS LTI model. T Time vector. Should be evenly spaced. If not specified, it is calculated by the poles of the system to reflect adequately the response transients. TFINAL Optional simulation horizon. If not specified, it is calculated by the poles of the system to reflect adequately the response transients. DT Optional sampling time. Be sure to choose it small enough to capture transient phenomena. If not specified, it is calculated by the poles of the system. *Outputs* Y Output response array. Has as many rows as time samples (length of t) and as many columns as outputs. T Time row vector. X State trajectories array. Has `length (t)' rows and as many columns as states. See also: initial, lsim, step # name: # type: sq_string # elements: 1 # length: 31 Impulse response of LTI system. # name: # type: sq_string # elements: 1 # length: 7 initial # name: # type: sq_string # elements: 1 # length: 1546 -- Function File: [Y, T, X] = initial (SYS, X0) -- Function File: [Y, T, X] = initial (SYS, X0, T) -- Function File: [Y, T, X] = initial (SYS, X0, TFINAL) -- Function File: [Y, T, X] = initial (SYS, X0, TFINAL, DT) Initial condition response of state-space model. If no output arguments are given, the response is printed on the screen. *Inputs* SYS State-space model. X0 Vector of initial conditions for each state. T Optional time vector. Should be evenly spaced. If not specified, it is calculated by the poles of the system to reflect adequately the response transients. TFINAL Optional simulation horizon. If not specified, it is calculated by the poles of the system to reflect adequately the response transients. DT Optional sampling time. Be sure to choose it small enough to capture transient phenomena. If not specified, it is calculated by the poles of the system. *Outputs* Y Output response array. Has as many rows as time samples (length of t) and as many columns as outputs. T Time row vector. X State trajectories array. Has `length (t)' rows and as many columns as states. *Example* . Continuous Time: x = A x , y = C x , x(0) = x0 Discrete Time: x[k+1] = A x[k] , y[k] = C x[k] , x[0] = x0 See also: impulse, lsim, step # name: # type: sq_string # elements: 1 # length: 48 Initial condition response of state-space model. # name: # type: sq_string # elements: 1 # length: 6 isctrb # name: # type: sq_string # elements: 1 # length: 1096 -- Function File: [BOOL, NCON] = isctrb (SYS) -- Function File: [BOOL, NCON] = isctrb (SYS, TOL) -- Function File: [BOOL, NCON] = isctrb (A, B) -- Function File: [BOOL, NCON] = isctrb (A, B, E) -- Function File: [BOOL, NCON] = isctrb (A, B, [], TOL) -- Function File: [BOOL, NCON] = isctrb (A, B, E, TOL) Logical check for system controllability. For numerical reasons, `isctrb (sys)' should be used instead of `rank (ctrb (sys))'. *Inputs* SYS LTI model. Descriptor state-space models are possible. A State transition matrix. B Input matrix. E Descriptor matrix. If E is empty `[]' or not specified, an identity matrix is assumed. TOL Optional roundoff parameter. Default value is 0. *Outputs* BOOL = 0 System is not controllable. BOOL = 1 System is controllable. NCON Number of controllable states. *Algorithm* Uses SLICOT AB01OD and TG01HD by courtesy of NICONET e.V. (http://www.slicot.org) See also: isobsv # name: # type: sq_string # elements: 1 # length: 41 Logical check for system controllability. # name: # type: sq_string # elements: 1 # length: 12 isdetectable # name: # type: sq_string # elements: 1 # length: 1509 -- Function File: BOOL = isdetectable (SYS) -- Function File: BOOL = isdetectable (SYS, TOL) -- Function File: BOOL = isdetectable (A, C) -- Function File: BOOL = isdetectable (A, C, E) -- Function File: BOOL = isdetectable (A, C, [], TOL) -- Function File: BOOL = isdetectable (A, C, E, TOL) -- Function File: BOOL = isdetectable (A, C, [], [], DFLG) -- Function File: BOOL = isdetectable (A, C, E, [], DFLG) -- Function File: BOOL = isdetectable (A, C, [], TOL, DFLG) -- Function File: BOOL = isdetectable (A, C, E, TOL, DFLG) Logical test for system detectability. All unstable modes must be observable or all unobservable states must be stable. *Inputs* SYS LTI system. A State transition matrix. C Measurement matrix. E Descriptor matrix. If E is empty `[]' or not specified, an identity matrix is assumed. TOL Optional tolerance for stability. Default value is 0. DFLG = 0 Matrices (A, C) are part of a continuous-time system. Default Value. DFLG = 1 Matrices (A, C) are part of a discrete-time system. *Outputs* BOOL = 0 System is not detectable. BOOL = 1 System is detectable. *Algorithm* Uses SLICOT AB01OD and TG01HD by courtesy of NICONET e.V. (http://www.slicot.org) See `isstabilizable' for description of computational method. See also: isstabilizable, isstable, isctrb, isobsv # name: # type: sq_string # elements: 1 # length: 38 Logical test for system detectability. # name: # type: sq_string # elements: 1 # length: 6 isobsv # name: # type: sq_string # elements: 1 # length: 1094 -- Function File: [BOOL, NOBS] = isobsv (SYS) -- Function File: [BOOL, NOBS] = isobsv (SYS, TOL) -- Function File: [BOOL, NOBS] = isobsv (A, C) -- Function File: [BOOL, NOBS] = isobsv (A, C, E) -- Function File: [BOOL, NOBS] = isobsv (A, C, [], TOL) -- Function File: [BOOL, NOBS] = isobsv (A, C, E, TOL) Logical check for system observability. For numerical reasons, `isobsv (sys)' should be used instead of `rank (obsv (sys))'. *Inputs* SYS LTI model. Descriptor state-space models are possible. A State transition matrix. C Measurement matrix. E Descriptor matrix. If E is empty `[]' or not specified, an identity matrix is assumed. TOL Optional roundoff parameter. Default value is 0. *Outputs* BOOL = 0 System is not observable. BOOL = 1 System is observable. NOBS Number of observable states. *Algorithm* Uses SLICOT AB01OD and TG01HD by courtesy of NICONET e.V. (http://www.slicot.org) See also: isctrb # name: # type: sq_string # elements: 1 # length: 39 Logical check for system observability. # name: # type: sq_string # elements: 1 # length: 8 issample # name: # type: sq_string # elements: 1 # length: 614 -- Function File: BOOL = issample (TS) -- Function File: BOOL = issample (TS, FLG) Return true if TS is a valid sampling time. *Inputs* TS Alleged sampling time to be tested. FLG = 1 Accept real scalars TS > 0. Default Value. FLG = 0 Accept real scalars TS >= 0. FLG = -1 Accept real scalars TS > 0 and TS == -1. FLG = -10 Accept real scalars TS >= 0 and TS == -1. FLG = -2 Accept real scalars TS >= 0, TS == -1 and TS == -2. *Outputs* BOOL True if conditions are met and false otherwise. # name: # type: sq_string # elements: 1 # length: 43 Return true if TS is a valid sampling time. # name: # type: sq_string # elements: 1 # length: 14 isstabilizable # name: # type: sq_string # elements: 1 # length: 1786 -- Function File: BOOL = isstabilizable (SYS) -- Function File: BOOL = isstabilizable (SYS, TOL) -- Function File: BOOL = isstabilizable (A, B) -- Function File: BOOL = isstabilizable (A, B, E) -- Function File: BOOL = isstabilizable (A, B, [], TOL) -- Function File: BOOL = isstabilizable (A, B, E, TOL) -- Function File: BOOL = isstabilizable (A, B, [], [], DFLG) -- Function File: BOOL = isstabilizable (A, B, E, [], DFLG) -- Function File: BOOL = isstabilizable (A, B, [], TOL, DFLG) -- Function File: BOOL = isstabilizable (A, B, E, TOL, DFLG) Logical check for system stabilizability. All unstable modes must be controllable or all uncontrollable states must be stable. *Inputs* SYS LTI system. A State transition matrix. B Input matrix. E Descriptor matrix. If E is empty `[]' or not specified, an identity matrix is assumed. TOL Optional tolerance for stability. Default value is 0. DFLG = 0 Matrices (A, B) are part of a continuous-time system. Default Value. DFLG = 1 Matrices (A, B) are part of a discrete-time system. *Outputs* BOOL = 0 System is not stabilizable. BOOL = 1 System is stabilizable. *Algorithm* Uses SLICOT AB01OD and TG01HD by courtesy of NICONET e.V. (http://www.slicot.org) * Calculate staircase form (SLICOT AB01OD) * Extract unobservable part of state transition matrix * Calculate eigenvalues of unobservable part * Check whether real (ev) < -tol*(1 + abs (ev)) continuous-time abs (ev) < 1 - tol discrete-time See also: isdetectable, isstable, isctrb, isobsv # name: # type: sq_string # elements: 1 # length: 41 Logical check for system stabilizability. # name: # type: sq_string # elements: 1 # length: 6 kalman # name: # type: sq_string # elements: 1 # length: 1539 -- Function File: [EST, G, X] = kalman (SYS, Q, R) -- Function File: [EST, G, X] = kalman (SYS, Q, R, S) -- Function File: [EST, G, X] = kalman (SYS, Q, R, [], SENSORS, KNOWN) -- Function File: [EST, G, X] = kalman (SYS, Q, R, S, SENSORS, KNOWN) Design Kalman estimator for LTI systems. *Inputs* SYS Nominal plant model. Q Covariance of white process noise. R Covariance of white measurement noise. S Optional cross term covariance. Default value is 0. SENSORS Indices of measured output signals y from SYS. If omitted, all outputs are measured. KNOWN Indices of known input signals u (deterministic) to SYS. All other inputs to SYS are assumed stochastic. If argument KNOWN is omitted, no inputs u are known. *Outputs* EST State-space model of the Kalman estimator. G Estimator gain. X Solution of the Riccati equation. *Block Diagram* u +-------+ ^ +---------------------------->| |-------> y | +-------+ + y | est | ^ u ----+--->| |----->(+)------>| |-------> x | sys | ^ + +-------+ w -------->| | | +-------+ | v Q = cov (w, w') R = cov (v, v') S = cov (w, v') See also: care, dare, estim, lqr # name: # type: sq_string # elements: 1 # length: 40 Design Kalman estimator for LTI systems. # name: # type: sq_string # elements: 1 # length: 3 lqe # name: # type: sq_string # elements: 1 # length: 1696 -- Function File: [L, P, E] = lqe (SYS, Q, R) -- Function File: [L, P, E] = lqe (SYS, Q, R, S) -- Function File: [L, P, E] = lqe (A, G, C, Q, R) -- Function File: [L, P, E] = lqe (A, G, C, Q, R, S) -- Function File: [L, P, E] = lqe (A, [], C, Q, R) -- Function File: [L, P, E] = lqe (A, [], C, Q, R, S) Kalman filter for continuous-time systems. . x = Ax + Bu + Gw (State equation) y = Cx + Du + v (Measurement Equation) E(w) = 0, E(v) = 0, cov(w) = Q, cov(v) = R, cov(w,v) = S *Inputs* SYS Continuous or discrete-time LTI model (p-by-m, n states). A State transition matrix of continuous-time system (n-by-n). G Process noise matrix of continuous-time system (n-by-g). If G is empty `[]', an identity matrix is assumed. C Measurement matrix of continuous-time system (p-by-n). Q Process noise covariance matrix (g-by-g). R Measurement noise covariance matrix (p-by-p). S Optional cross term covariance matrix (g-by-p), s = cov(w,v). If S is empty `[]' or not specified, a zero matrix is assumed. *Outputs* L Kalman filter gain matrix (n-by-p). P Unique stabilizing solution of the continuous-time Riccati equation (n-by-n). Symmetric matrix. If SYS is a discrete-time model, the solution of the corresponding discrete-time Riccati equation is returned. E Closed-loop poles (n-by-1). *Equations* . x = Ax + Bu + L(y - Cx -Du) E = eig(A - L*C) See also: dare, care, dlqr, lqr, dlqe # name: # type: sq_string # elements: 1 # length: 42 Kalman filter for continuous-time systems. # name: # type: sq_string # elements: 1 # length: 3 lqr # name: # type: sq_string # elements: 1 # length: 1353 -- Function File: [G, X, L] = lqr (SYS, Q, R) -- Function File: [G, X, L] = lqr (SYS, Q, R, S) -- Function File: [G, X, L] = lqr (A, B, Q, R) -- Function File: [G, X, L] = lqr (A, B, Q, R, S) -- Function File: [G, X, L] = lqr (A, B, Q, R, [], E) -- Function File: [G, X, L] = lqr (A, B, Q, R, S, E) Linear-quadratic regulator. *Inputs* SYS Continuous or discrete-time LTI model (p-by-m, n states). A State transition matrix of continuous-time system (n-by-n). B Input matrix of continuous-time system (n-by-m). Q State weighting matrix (n-by-n). R Input weighting matrix (m-by-m). S Optional cross term matrix (n-by-m). If S is not specified, a zero matrix is assumed. E Optional descriptor matrix (n-by-n). If E is not specified, an identity matrix is assumed. *Outputs* G State feedback matrix (m-by-n). X Unique stabilizing solution of the continuous-time Riccati equation (n-by-n). L Closed-loop poles (n-by-1). *Equations* . x = A x + B u, x(0) = x0 inf J(x0) = INT (x' Q x + u' R u + 2 x' S u) dt 0 L = eig (A - B*G) See also: care, dare, dlqr # name: # type: sq_string # elements: 1 # length: 27 Linear-quadratic regulator. # name: # type: sq_string # elements: 1 # length: 4 lsim # name: # type: sq_string # elements: 1 # length: 1744 -- Function File: [Y, T, X] = lsim (SYS, U) -- Function File: [Y, T, X] = lsim (SYS, U, T) -- Function File: [Y, T, X] = lsim (SYS, U, T, X0) -- Function File: [Y, T, X] = lsim (SYS, U, T, [], METHOD) -- Function File: [Y, T, X] = lsim (SYS, U, T, X0, METHOD) Simulate LTI model response to arbitrary inputs. If no output arguments are given, the system response is plotted on the screen. *Inputs* SYS LTI model. System must be proper, i.e. it must not have more zeros than poles. U Vector or array of input signal. Needs `length(t)' rows and as many columns as there are inputs. If SYS is a single-input system, row vectors U of length `length(t)' are accepted as well. T Time vector. Should be evenly spaced. If SYS is a continuous-time system and T is a real scalar, SYS is discretized with sampling time `tsam = t/(rows(u)-1)'. If SYS is a discrete-time system and T is not specified, vector T is assumed to be `0 : tsam : tsam*(rows(u)-1)'. X0 Vector of initial conditions for each state. If not specified, a zero vector is assumed. METHOD Discretization method for continuous-time models. Default value is zoh (zero-order hold). All methods from `c2d' are supported. *Outputs* Y Output response array. Has as many rows as time samples (length of t) and as many columns as outputs. T Time row vector. It is always evenly spaced. X State trajectories array. Has `length (t)' rows and as many columns as states. See also: impulse, initial, step # name: # type: sq_string # elements: 1 # length: 48 Simulate LTI model response to arbitrary inputs. # name: # type: sq_string # elements: 1 # length: 9 ltimodels # name: # type: sq_string # elements: 1 # length: 144 -- Function File: test ltimodels -- Function File: ltimodels -- Function File: ltimodels (SYSTYPE) Test suite and help for LTI models. # name: # type: sq_string # elements: 1 # length: 35 Test suite and help for LTI models. # name: # type: sq_string # elements: 1 # length: 4 lyap # name: # type: sq_string # elements: 1 # length: 527 -- Function File: X = lyap (A, B) -- Function File: X = lyap (A, B, C) -- Function File: X = lyap (A, B, [], E) Solve continuous-time Lyapunov or Sylvester equations. *Equations* AX + XA' + B = 0 (Lyapunov Equation) AX + XB + C = 0 (Sylvester Equation) AXE' + EXA' + B = 0 (Generalized Lyapunov Equation) *Algorithm* Uses SLICOT SB03MD, SB04MD and SG03AD by courtesy of NICONET e.V. (http://www.slicot.org) See also: lyapchol, dlyap, dlyapchol # name: # type: sq_string # elements: 1 # length: 54 Solve continuous-time Lyapunov or Sylvester equations. # name: # type: sq_string # elements: 1 # length: 8 lyapchol # name: # type: sq_string # elements: 1 # length: 479 -- Function File: U = lyapchol (A, B) -- Function File: U = lyapchol (A, B, E) Compute Cholesky factor of continuous-time Lyapunov equations. *Equations* A U' U + U' U A' + B B' = 0 (Lyapunov Equation) A U' U E' + E U' U A' + B B' = 0 (Generalized Lyapunov Equation) *Algorithm* Uses SLICOT SB03OD and SG03BD by courtesy of NICONET e.V. (http://www.slicot.org) See also: lyap, dlyap, dlyapchol # name: # type: sq_string # elements: 1 # length: 62 Compute Cholesky factor of continuous-time Lyapunov equations. # name: # type: sq_string # elements: 1 # length: 6 margin # name: # type: sq_string # elements: 1 # length: 2742 -- Function File: [GAMMA, PHI, W_GAMMA, W_PHI] = margin (SYS) -- Function File: [GAMMA, PHI, W_GAMMA, W_PHI] = margin (SYS, TOL) Gain and phase margin of a system. If no output arguments are given, both gain and phase margin are plotted on a bode diagram. Otherwise, the margins and their corresponding frequencies are computed and returned. *Inputs* SYS LTI model. Must be a single-input and single-output (SISO) system. TOL Imaginary parts below TOL are assumed to be zero. If not specified, default value `sqrt (eps)' is taken. *Outputs* GAMMA Gain margin (as gain, not dBs). PHI Phase margin (in degrees). W_GAMMA Frequency for the gain margin (in rad/s). W_PHI Frequency for the phase margin (in rad/s). *Equations* CONTINUOUS SYSTEMS Gain Margin _ _ L(jw) = L(jw) BTW: L(jw) = L(-jw) = conj (L(jw)) num(jw) num(-jw) ------- = -------- den(jw) den(-jw) num(jw) den(-jw) = num(-jw) den(jw) imag (num(jw) den(-jw)) = 0 imag (num(-jw) den(jw)) = 0 Phase Margin |num(jw)| |L(jw)| = |-------| = 1 |den(jw)| _ 2 2 z z = Re z + Im z num(jw) num(-jw) ------- * -------- = 1 den(jw) den(-jw) num(jw) num(-jw) - den(jw) den(-jw) = 0 real (num(jw) num(-jw) - den(jw) den(-jw)) = 0 DISCRETE SYSTEMS Gain Margin jwT log z L(z) = L(1/z) BTW: z = e --> w = ----- j T num(z) num(1/z) ------ = -------- den(z) den(1/z) num(z) den(1/z) - num(1/z) den(z) = 0 Phase Margin |num(z)| |L(z)| = |------| = 1 |den(z)| L(z) L(1/z) = 1 num(z) num(1/z) ------ * -------- = 1 den(z) den(1/z) num(z) num(1/z) - den(z) den(1/z) = 0 PS: How to get L(1/z) 4 3 2 p(z) = a z + b z + c z + d z + e -4 -3 -2 -1 p(1/z) = a z + b z + c z + d z + e -4 2 3 4 = z ( a + b z + c z + d z + e z ) 4 3 2 4 = ( e z + d z + c z + b z + a ) / ( z ) See also: roots # name: # type: sq_string # elements: 1 # length: 34 Gain and phase margin of a system. # name: # type: sq_string # elements: 1 # length: 6 mixsyn # name: # type: sq_string # elements: 1 # length: 4424 -- Function File: [K, N, GAMMA, RCOND] = mixsyn (G, W1, W2, W3, ...) Solve stacked S/KS/T H-infinity problem. Bound the largest singular values of S (for performance), K S (to penalize large inputs) and T (for robustness and to avoid sensitivity to noise). In other words, the inputs r are excited by a harmonic test signal. Then the algorithm tries to find a controller K which minimizes the H-infinity norm calculated from the outputs z. *Inputs* G LTI model of plant. W1 LTI model of performance weight. Bounds the largest singular values of sensitivity S. Model must be empty `[]', SISO or of appropriate size. W2 LTI model to penalize large control inputs. Bounds the largest singular values of KS. Model must be empty `[]', SISO or of appropriate size. W3 LTI model of robustness and noise sensitivity weight. Bounds the largest singular values of complementary sensitivity T. Model must be empty `[]', SISO or of appropriate size. ... Optional arguments of `hinfsyn'. Type `help hinfsyn' for more information. All inputs must be proper/realizable. Scalars, vectors and matrices are possible instead of LTI models. *Outputs* K State-space model of the H-infinity (sub-)optimal controller. N State-space model of the lower LFT of P and K. GAMMA L-infinity norm of N. RCOND Vector RCOND contains estimates of the reciprocal condition numbers of the matrices which are to be inverted and estimates of the reciprocal condition numbers of the Riccati equations which have to be solved during the computation of the controller K. For details, see the description of the corresponding SLICOT algorithm. *Block Diagram* | W1 S | gamma = min||N(K)|| N = | W2 K S | = lft (P, K) K inf | W3 T | +------+ z1 +---------------------------------------->| W1 |-----> | +------+ | +------+ z2 | +---------------------->| W2 |-----> | | +------+ r + e | +--------+ u | +--------+ y +------+ z3 ----->(+)---+-->| K(s) |----+-->| G(s) |----+---->| W3 |-----> ^ - +--------+ +--------+ | +------+ | | +----------------------------------------+ +--------+ | |-----> z1 (p1x1) z1 = W1 e r (px1) ----->| P(s) |-----> z2 (p2x1) z2 = W2 u | |-----> z3 (p3x1) z3 = W3 y u (mx1) ----->| |-----> e (px1) e = r - y +--------+ +--------+ r ----->| |-----> z | P(s) | u +---->| |-----+ e | +--------+ | | | | +--------+ | +-----| K(s) |<----+ +--------+ +--------+ r ----->| N(s) |-----> z +--------+ Extended Plant: P = augw (G, W1, W2, W3) Controller: K = mixsyn (G, W1, W2, W3) Entire System: N = lft (P, K) Open Loop: L = G * K Closed Loop: T = feedback (L) Reference: Skogestad, S. and Postlethwaite I. Multivariable Feedback Control: Analysis and Design Second Edition Wiley 2005 Chapter 3.8: General Control Problem Formulation *Algorithm* Relies on commands `augw' and `hinfsyn', which use SLICOT SB10FD and SB10DD by courtesy of NICONET e.V. (http://www.slicot.org) See also: hinfsyn, augw # name: # type: sq_string # elements: 1 # length: 40 Solve stacked S/KS/T H-infinity problem. # name: # type: sq_string # elements: 1 # length: 6 ncfsyn # name: # type: sq_string # elements: 1 # length: 2310 -- Function File: [K, N, GAMMA, INFO] = ncfsyn (G, W1, W2, FACTOR) Loop shaping H-infinity synthesis. Compute positive feedback controller using the McFarlane/Glover normalized coprime factor (NCF) loop shaping design procedure. *Inputs* G LTI model of plant. W1 LTI model of precompensator. Model must be SISO or of appropriate size. An identity matrix is taken if W1 is not specified or if an empty model `[]' is passed. W2 LTI model of postcompensator. Model must be SISO or of appropriate size. An identity matrix is taken if W2 is not specified or if an empty model `[]' is passed. FACTOR `factor = 1' implies that an optimal controller is required. `factor > 1' implies that a suboptimal controller is required, achieving a performance that is FACTOR times less than optimal. Default value is 1. *Outputs* K State-space model of the H-infinity loop-shaping controller. N State-space model of the closed loop depicted below. GAMMA L-infinity norm of N. `gamma = norm (N, inf)'. INFO Structure containing additional information. INFO.EMAX Nugap robustness. `emax = inv (gamma)'. INFO.GS Shaped plant. `Gs = W2 * G * W1'. INFO.KS Controller for shaped plant. `Ks = ncfsyn (Gs)'. INFO.RCOND Estimates of the reciprocal condition numbers of the Riccati equations and a few other things. For details, see the description of the corresponding SLICOT algorithm. *Block Diagram of N* ^ z1 ^ z2 | | w1 + | +--------+ | +--------+ ----->(+)---+-->| Ks |----+--->(+)---->| Gs |----+ ^ + +--------+ ^ +--------+ | | w2 | | | | +-------------------------------------------------+ *Algorithm* Uses SLICOT SB10ID, SB10KD and SB10ZD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 34 Loop shaping H-infinity synthesis. # name: # type: sq_string # elements: 1 # length: 7 nichols # name: # type: sq_string # elements: 1 # length: 894 -- Function File: [MAG, PHA, W] = nichols (SYS) -- Function File: [MAG, PHA, W] = nichols (SYS, W) Nichols chart of frequency response. If no output arguments are given, the response is printed on the screen. *Inputs* SYS LTI system. Must be a single-input and single-output (SISO) system. W Optional vector of frequency values. If W is not specified, it is calculated by the zeros and poles of the system. Alternatively, the cell `{wmin, wmax}' specifies a frequency range, where WMIN and WMAX denote minimum and maximum frequencies in rad/s. *Outputs* MAG Vector of magnitude. Has length of frequency vector W. PHA Vector of phase. Has length of frequency vector W. W Vector of frequency values used. See also: bode, nyquist, sigma # name: # type: sq_string # elements: 1 # length: 36 Nichols chart of frequency response. # name: # type: sq_string # elements: 1 # length: 7 nyquist # name: # type: sq_string # elements: 1 # length: 901 -- Function File: [RE, IM, W] = nyquist (SYS) -- Function File: [RE, IM, W] = nyquist (SYS, W) Nyquist diagram of frequency response. If no output arguments are given, the response is printed on the screen. *Inputs* SYS LTI system. Must be a single-input and single-output (SISO) system. W Optional vector of frequency values. If W is not specified, it is calculated by the zeros and poles of the system. Alternatively, the cell `{wmin, wmax}' specifies a frequency range, where WMIN and WMAX denote minimum and maximum frequencies in rad/s. *Outputs* RE Vector of real parts. Has length of frequency vector W. IM Vector of imaginary parts. Has length of frequency vector W. W Vector of frequency values used. See also: bode, nichols, sigma # name: # type: sq_string # elements: 1 # length: 38 Nyquist diagram of frequency response. # name: # type: sq_string # elements: 1 # length: 4 obsv # name: # type: sq_string # elements: 1 # length: 459 -- Function File: OB = obsv (SYS) -- Function File: OB = obsv (A, C) Return observability matrix. *Inputs* SYS LTI model. A State transition matrix (n-by-n). C Measurement matrix (p-by-n). *Outputs* OB Observability matrix. *Equation* | C | | CA | Ob = | CA^2 | | ... | | CA^(n-1) | # name: # type: sq_string # elements: 1 # length: 28 Return observability matrix. # name: # type: sq_string # elements: 1 # length: 5 obsvf # name: # type: sq_string # elements: 1 # length: 925 -- Function File: [SYSBAR, T, K] = obsvf (SYS) -- Function File: [SYSBAR, T, K] = obsvf (SYS, TOL) -- Function File: [ABAR, BBAR, CBAR, T, K] = obsvf (A, B, C) -- Function File: [ABAR, BBAR, CBAR, T, K] = obsvf (A, B, C, TOL) If Ob=obsv(A,C) has rank r <= n = SIZE(A,1), then there is a similarity transformation Tc such that To = [t1;t2] where t1 is c and t2 is orthogonal to t1 Abar = To \ A * To , Bbar = To \ B , Cbar = C * To and the transformed system has the form | Ao 0 | | Bo | Abar = |----------|, Bbar = | --- |, Cbar = [Co | 0 ]. | A21 Ano| | Bno | where (Ao,Bo) is observable, and Co(sI-Ao)^(-1)Bo = C(sI-A)^(-1)B. And system is detectable if Ano has no eigenvalues in the right half plane. The last output K is a vector of length n containing the number of observable states. # name: # type: sq_string # elements: 1 # length: 80 If Ob=obsv(A,C) has rank r <= n = SIZE(A,1), then there is a similarity transfor # name: # type: sq_string # elements: 1 # length: 7 optiPID # name: # type: sq_string # elements: 1 # length: 235 Numerical optimization of a PID controller using an objective function. The objective function is located in the file `optiPIDfun'. Type `which optiPID' to locate, `edit optiPID' to open and simply `optiPID' to run the example file. # name: # type: sq_string # elements: 1 # length: 71 Numerical optimization of a PID controller using an objective function. # name: # type: sq_string # elements: 1 # length: 11 optiPIDctrl # name: # type: sq_string # elements: 1 # length: 397 =============================================================================== optiPIDctrl Lukas Reichlin February 2012 =============================================================================== Return PID controller with roll-off for given parameters Kp, Ti and Td. =============================================================================== # name: # type: sq_string # elements: 1 # length: 80 =============================================================================== # name: # type: sq_string # elements: 1 # length: 10 optiPIDfun # name: # type: sq_string # elements: 1 # length: 464 =============================================================================== optiPIDfun Lukas Reichlin July 2009 =============================================================================== Objective Function Reference: Guzzella, L. (2007) Analysis and Synthesis of SISO Control Systems. vdf Hochschulverlag, Zurich =============================================================================== # name: # type: sq_string # elements: 1 # length: 80 =============================================================================== # name: # type: sq_string # elements: 1 # length: 7 options # name: # type: sq_string # elements: 1 # length: 791 -- Function File: OPT = options ("KEY1", VALUE1, "KEY2", VALUE2, ...) Create options struct OPT from a number of key and value pairs. For use with order reduction commands. *Inputs* KEY, PROPERTY The name of the property. VALUE The value of the property. *Outputs* OPT Struct with fields for each key. *Example* octave:1> opt = options ("method", "spa", "tol", 1e-6) opt = scalar structure containing the fields: method = spa tol = 1.0000e-06 octave:2> save filename opt octave:3> # save the struct 'opt' to file 'filename' for later use octave:4> load filename octave:5> # load struct 'opt' from file 'filename' # name: # type: sq_string # elements: 1 # length: 63 Create options struct OPT from a number of key and value pairs. # name: # type: sq_string # elements: 1 # length: 5 place # name: # type: sq_string # elements: 1 # length: 1978 -- Function File: F = place (SYS, P) -- Function File: F = place (A, B, P) -- Function File: [F, INFO] = place (SYS, P, ALPHA) -- Function File: [F, INFO] = place (A, B, P, ALPHA) Pole assignment for a given matrix pair (A,B) such that `p = eig (A-B*F)'. If parameter ALPHA is specified, poles with real parts (continuous-time) or moduli (discrete-time) below ALPHA are left untouched. *Inputs* SYS LTI system. A State transition matrix (n-by-n) of a continuous-time system. B Input matrix (n-by-m) of a continuous-time system. P Desired eigenvalues of the closed-loop system state-matrix A-B*F. `length (p) <= rows (A)'. ALPHA Specifies the maximum admissible value, either for real parts or for moduli, of the eigenvalues of A which will not be modified by the eigenvalue assignment algorithm. `alpha >= 0' for discrete-time systems. *Outputs* F State feedback gain matrix. INFO Structure containing additional information. INFO.NFP The number of fixed poles, i.e. eigenvalues of A having real parts less than ALPHA, or moduli less than ALPHA. These eigenvalues are not modified by `place'. INFO.NAP The number of assigned eigenvalues. `nap = n-nfp-nup'. INFO.NUP The number of uncontrollable eigenvalues detected by the eigenvalue assignment algorithm. INFO.Z The orthogonal matrix Z reduces the closed-loop system state matrix `A + B*F' to upper real Schur form. Note the positive sign in `A + B*F'. *Note* Place is also suitable to design estimator gains: L = place (A.', C.', p).' L = place (sys.', p).' # useful for discrete-time systems *Algorithm* Uses SLICOT SB01BD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 74 Pole assignment for a given matrix pair (A,B) such that `p = eig (A-B*F)'. # name: # type: sq_string # elements: 1 # length: 5 pzmap # name: # type: sq_string # elements: 1 # length: 415 -- Function File: pzmap (SYS) -- Function File: [P, Z] = pzmap (SYS) Plot the poles and zeros of an LTI system in the complex plane. If no output arguments are given, the result is plotted on the screen. Otherwise, the poles and zeros are computed and returned. *Inputs* SYS LTI model. *Outputs* P Poles of SYS. Z Transmission zeros of SYS. # name: # type: sq_string # elements: 1 # length: 63 Plot the poles and zeros of an LTI system in the complex plane. # name: # type: sq_string # elements: 1 # length: 6 rlocus # name: # type: sq_string # elements: 1 # length: 910 -- Function File: rlocus (SYS) -- Function File: [RLDATA, K] = rlocus (SYS, INCREMENT, MIN_K, MAX_K) Display root locus plot of the specified SISO system. *Inputs* SYS LTI model. Must be a single-input and single-output (SISO) system. MIN_K Minimum value of K. MAX_K Maximum value of K. INCREMENT The increment used in computing gain values. *Outputs* RLDATA Data points plotted: in column 1 real values, in column 2 the imaginary values. K Gains for real axis break points. *Block Diagram* u + +---+ +------+ y ------>(+)----->| k |----->| SISO |-------+-------> ^ - +---+ +------+ | | | +---------------------------------+ # name: # type: sq_string # elements: 1 # length: 53 Display root locus plot of the specified SISO system. # name: # type: sq_string # elements: 1 # length: 5 sigma # name: # type: sq_string # elements: 1 # length: 1643 -- Function File: [SV, W] = sigma (SYS) -- Function File: [SV, W] = sigma (SYS, W) -- Function File: [SV, W] = sigma (SYS, [], PTYPE) -- Function File: [SV, W] = sigma (SYS, W, PTYPE) Singular values of frequency response. If no output arguments are given, the singular value plot is printed on the screen; *Inputs* SYS LTI system. Multiple inputs and/or outputs (MIMO systems) make practical sense. W Optional vector of frequency values. If W is not specified, it is calculated by the zeros and poles of the system. Alternatively, the cell `{wmin, wmax}' specifies a frequency range, where WMIN and WMAX denote minimum and maximum frequencies in rad/s. PTYPE = 0 Singular values of the frequency response H of system SYS. Default Value. PTYPE = 1 Singular values of the frequency response `inv(H)'; i.e. inversed system. PTYPE = 2 Singular values of the frequency response `I + H'; i.e. inversed sensitivity (or return difference) if `H = P * C'. PTYPE = 3 Singular values of the frequency response `I + inv(H)'; i.e. inversed complementary sensitivity if `H = P * C'. *Outputs* SV Array of singular values. For a system with m inputs and p outputs, the array sv has `min (m, p)' rows and as many columns as frequency points `length (w)'. The singular values at the frequency `w(k)' are given by `sv(:,k)'. W Vector of frequency values used. See also: bodemag, svd # name: # type: sq_string # elements: 1 # length: 38 Singular values of frequency response. # name: # type: sq_string # elements: 1 # length: 9 spaconred # name: # type: sq_string # elements: 1 # length: 6224 -- Function File: [KR, INFO] = spaconred (G, K, ...) -- Function File: [KR, INFO] = spaconred (G, K, NCR, ...) -- Function File: [KR, INFO] = spaconred (G, K, OPT, ...) -- Function File: [KR, INFO] = spaconred (G, K, NCR, OPT, ...) Controller reduction by frequency-weighted Singular Perturbation Approximation (SPA). Given a plant G and a stabilizing controller K, determine a reduced order controller KR such that the closed-loop system is stable and closed-loop performance is retained. The algorithm tries to minimize the frequency-weighted error ||V (K-Kr) W|| = min inf where V and W denote output and input weightings. *Inputs* G LTI model of the plant. It has m inputs, p outputs and n states. K LTI model of the controller. It has p inputs, m outputs and nc states. NCR The desired order of the resulting reduced order controller KR. If not specified, NCR is chosen automatically according to the description of key 'ORDER'. ... Optional pairs of keys and values. `"key1", value1, "key2", value2'. OPT Optional struct with keys as field names. Struct OPT can be created directly or by command `options'. `opt.key1 = value1, opt.key2 = value2'. *Outputs* KR State-space model of reduced order controller. INFO Struct containing additional information. INFO.NCR The order of the obtained reduced order controller KR. INFO.NCS The order of the alpha-stable part of original controller K. INFO.HSVC The Hankel singular values of the alpha-stable part of K. The NCS Hankel singular values are ordered decreasingly. *Option Keys and Values* 'ORDER', 'NCR' The desired order of the resulting reduced order controller KR. If not specified, NCR is chosen automatically such that states with Hankel singular values INFO.HSVC > TOL1 are retained. 'METHOD' Order reduction approach to be used as follows: 'SR', 'S' Use the square-root Singular Perturbation Approximation method. 'BFSR', 'P' Use the balancing-free square-root Singular Perturbation Approximation method. Default method. 'WEIGHT' Specifies the type of frequency-weighting as follows: 'NONE' No weightings are used (V = I, W = I). 'LEFT', 'OUTPUT' Use stability enforcing left (output) weighting -1 V = (I-G*K) *G , W = I 'RIGHT', 'INPUT' Use stability enforcing right (input) weighting -1 V = I , W = (I-G*K) *G 'BOTH', 'PERFORMANCE' Use stability and performance enforcing weightings -1 -1 V = (I-G*K) *G , W = (I-G*K) Default value. 'FEEDBACK' Specifies whether K is a positive or negative feedback controller: '+' Use positive feedback controller. Default value. '-' Use negative feedback controller. 'ALPHA' Specifies the ALPHA-stability boundary for the eigenvalues of the state dynamics matrix K.A. For a continuous-time controller, ALPHA <= 0 is the boundary value for the real parts of eigenvalues, while for a discrete-time controller, 0 <= ALPHA <= 1 represents the boundary value for the moduli of eigenvalues. The ALPHA-stability domain does not include the boundary. Default value is 0 for continuous-time controllers and 1 for discrete-time controllers. 'TOL1' If 'ORDER' is not specified, TOL1 contains the tolerance for determining the order of the reduced controller. For model reduction, the recommended value of TOL1 is c*info.hsvc(1), where c lies in the interval [0.00001, 0.001]. Default value is info.ncs*eps*info.hsvc(1). If 'ORDER' is specified, the value of TOL1 is ignored. 'TOL2' The tolerance for determining the order of a minimal realization of the ALPHA-stable part of the given controller. TOL2 <= TOL1. If not specified, ncs*eps*info.hsvc(1) is chosen. 'GRAM-CTRB' Specifies the choice of frequency-weighted controllability Grammian as follows: 'STANDARD' Choice corresponding to standard Enns' method [1]. Default method. 'ENHANCED' Choice corresponding to the stability enhanced modified Enns' method of [2]. 'GRAM-OBSV' Specifies the choice of frequency-weighted observability Grammian as follows: 'STANDARD' Choice corresponding to standard Enns' method [1]. Default method. 'ENHANCED' Choice corresponding to the stability enhanced modified Enns' method of [2]. 'EQUIL', 'SCALE' Boolean indicating whether equilibration (scaling) should be performed on G and K prior to order reduction. Default value is false if both `G.scaled == true, K.scaled == true' and true otherwise. Note that for MIMO models, proper scaling of both inputs and outputs is of utmost importance. The input and output scaling can *not* be done by the equilibration option or the `prescale' command because these functions perform state transformations only. Furthermore, signals should not be scaled simply to a certain range. For all inputs (or outputs), a certain change should be of the same importance for the model. *Algorithm* Uses SLICOT SB16AD by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 80 Controller reduction by frequency-weighted Singular Perturbation Approximation ( # name: # type: sq_string # elements: 1 # length: 9 spamodred # name: # type: sq_string # elements: 1 # length: 7167 -- Function File: [GR, INFO] = spamodred (G, ...) -- Function File: [GR, INFO] = spamodred (G, NR, ...) -- Function File: [GR, INFO] = spamodred (G, OPT, ...) -- Function File: [GR, INFO] = spamodred (G, NR, OPT, ...) Model order reduction by frequency weighted Singular Perturbation Approximation (SPA). The aim of model reduction is to find an LTI system GR of order NR (nr < n) such that the input-output behaviour of GR approximates the one from original system G. SPA is an absolute error method which tries to minimize ||G-Gr|| = min inf ||V (G-Gr) W|| = min inf where V and W denote output and input weightings. *Inputs* G LTI model to be reduced. NR The desired order of the resulting reduced order system GR. If not specified, NR is chosen automatically according to the description of key 'ORDER'. ... Optional pairs of keys and values. `"key1", value1, "key2", value2'. OPT Optional struct with keys as field names. Struct OPT can be created directly or by command `options'. `opt.key1 = value1, opt.key2 = value2'. *Outputs* GR Reduced order state-space model. INFO Struct containing additional information. INFO.N The order of the original system G. INFO.NS The order of the ALPHA-stable subsystem of the original system G. INFO.HSV The Hankel singular values of the ALPHA-stable part of the original system G, ordered decreasingly. INFO.NU The order of the ALPHA-unstable subsystem of both the original system G and the reduced-order system GR. INFO.NR The order of the obtained reduced order system GR. *Option Keys and Values* 'ORDER', 'NR' The desired order of the resulting reduced order system GR. If not specified, NR is chosen automatically such that states with Hankel singular values INFO.HSV > TOL1 are retained. 'LEFT', 'OUTPUT' LTI model of the left/output frequency weighting V. Default value is an identity matrix. 'RIGHT', 'INPUT' LTI model of the right/input frequency weighting W. Default value is an identity matrix. 'METHOD' Approximation method for the L-infinity norm to be used as follows: 'SR', 'S' Use the square-root Singular Perturbation Approximation method. 'BFSR', 'P' Use the balancing-free square-root Singular Perturbation Approximation method. Default method. 'ALPHA' Specifies the ALPHA-stability boundary for the eigenvalues of the state dynamics matrix G.A. For a continuous-time system, ALPHA <= 0 is the boundary value for the real parts of eigenvalues, while for a discrete-time system, 0 <= ALPHA <= 1 represents the boundary value for the moduli of eigenvalues. The ALPHA-stability domain does not include the boundary. Default value is 0 for continuous-time systems and 1 for discrete-time systems. 'TOL1' If 'ORDER' is not specified, TOL1 contains the tolerance for determining the order of the reduced model. For model reduction, the recommended value of TOL1 is c*info.hsv(1), where c lies in the interval [0.00001, 0.001]. Default value is info.ns*eps*info.hsv(1). If 'ORDER' is specified, the value of TOL1 is ignored. 'TOL2' The tolerance for determining the order of a minimal realization of the ALPHA-stable part of the given model. TOL2 <= TOL1. If not specified, ns*eps*info.hsv(1) is chosen. 'GRAM-CTRB' Specifies the choice of frequency-weighted controllability Grammian as follows: 'STANDARD' Choice corresponding to a combination method [4] of the approaches of Enns [1] and Lin-Chiu [2,3]. Default method. 'ENHANCED' Choice corresponding to the stability enhanced modified combination method of [4]. 'GRAM-OBSV' Specifies the choice of frequency-weighted observability Grammian as follows: 'STANDARD' Choice corresponding to a combination method [4] of the approaches of Enns [1] and Lin-Chiu [2,3]. Default method. 'ENHANCED' Choice corresponding to the stability enhanced modified combination method of [4]. 'ALPHA-CTRB' Combination method parameter for defining the frequency-weighted controllability Grammian. abs(alphac) <= 1. If alphac = 0, the choice of Grammian corresponds to the method of Enns [1], while if alphac = 1, the choice of Grammian corresponds to the method of Lin and Chiu [2,3]. Default value is 0. 'ALPHA-OBSV' Combination method parameter for defining the frequency-weighted observability Grammian. abs(alphao) <= 1. If alphao = 0, the choice of Grammian corresponds to the method of Enns [1], while if alphao = 1, the choice of Grammian corresponds to the method of Lin and Chiu [2,3]. Default value is 0. 'EQUIL', 'SCALE' Boolean indicating whether equilibration (scaling) should be performed on system G prior to order reduction. Default value is true if `G.scaled == false' and false if `G.scaled == true'. Note that for MIMO models, proper scaling of both inputs and outputs is of utmost importance. The input and output scaling can *not* be done by the equilibration option or the `prescale' command because these functions perform state transformations only. Furthermore, signals should not be scaled simply to a certain range. For all inputs (or outputs), a certain change should be of the same importance for the model. *References* [1] Enns, D. Model reduction with balanced realizations: An error bound and a frequency weighted generalization. Proc. 23-th CDC, Las Vegas, pp. 127-132, 1984. [2] Lin, C.-A. and Chiu, T.-Y. Model reduction via frequency-weighted balanced realization. Control Theory and Advanced Technology, vol. 8, pp. 341-351, 1992. [3] Sreeram, V., Anderson, B.D.O and Madievski, A.G. New results on frequency weighted balanced reduction technique. Proc. ACC, Seattle, Washington, pp. 4004-4009, 1995. [4] Varga, A. and Anderson, B.D.O. Square-root balancing-free methods for the frequency-weighted balancing related model reduction. (report in preparation) *Algorithm* Uses SLICOT AB09ID by courtesy of NICONET e.V. (http://www.slicot.org) # name: # type: sq_string # elements: 1 # length: 80 Model order reduction by frequency weighted Singular Perturbation Approximation # name: # type: sq_string # elements: 1 # length: 4 step # name: # type: sq_string # elements: 1 # length: 1235 -- Function File: [Y, T, X] = step (SYS) -- Function File: [Y, T, X] = step (SYS, T) -- Function File: [Y, T, X] = step (SYS, TFINAL) -- Function File: [Y, T, X] = step (SYS, TFINAL, DT) Step response of LTI system. If no output arguments are given, the response is printed on the screen. *Inputs* SYS LTI model. T Time vector. Should be evenly spaced. If not specified, it is calculated by the poles of the system to reflect adequately the response transients. TFINAL Optional simulation horizon. If not specified, it is calculated by the poles of the system to reflect adequately the response transients. DT Optional sampling time. Be sure to choose it small enough to capture transient phenomena. If not specified, it is calculated by the poles of the system. *Outputs* Y Output response array. Has as many rows as time samples (length of t) and as many columns as outputs. T Time row vector. X State trajectories array. Has `length (t)' rows and as many columns as states. See also: impulse, initial, lsim # name: # type: sq_string # elements: 1 # length: 28 Step response of LTI system. # name: # type: sq_string # elements: 1 # length: 6 strseq # name: # type: sq_string # elements: 1 # length: 250 -- Function File: STRVEC = strseq (STR, IDX) Return a cell vector of indexed strings by appending the indices IDX to the string STR. strseq ("x", 1:3) = {"x1"; "x2"; "x3"} strseq ("u", [1, 2, 5]) = {"u1"; "u2"; "u5"} # name: # type: sq_string # elements: 1 # length: 80 Return a cell vector of indexed strings by appending the indices IDX to the stri # name: # type: sq_string # elements: 1 # length: 12 test_control # name: # type: sq_string # elements: 1 # length: 1089 -- Script File: test_control Execute all available tests at once. The Octave control package is based on the SLICOT (http://www.slicot.org) library. SLICOT needs a LAPACK library which is also a prerequisite for Octave itself. In case of failing test, it is highly recommended to use Netlib's reference LAPACK (http://www.netlib.org/lapack/) for building Octave. Using ATLAS may lead to sign changes in some entries in the state-space matrices. In general, these sign changes are not 'wrong' and can be regarded as the result of state transformations. Such state transformations (but not input/output transformations) have no influence on the input-output behaviour of the system. For better numerics, the control package uses such transformations by default when calculating the frequency responses and a few other things. However, arguments like the Hankel singular Values (HSV) must not change. Differing HSVs and failing algorithms are known for using Framework Accelerate from Mac OS X 10.7. # name: # type: sq_string # elements: 1 # length: 36 Execute all available tests at once. # name: # type: sq_string # elements: 1 # length: 10 tfpoly2str # name: # type: sq_string # elements: 1 # length: 158 -- Function File: STR = tfpoly2str (P) -- Function File: STR = tfpoly2str (P, TFVAR) Return the string of a polynomial with string TFVAR as variable. # name: # type: sq_string # elements: 1 # length: 64 Return the string of a polynomial with string TFVAR as variable. # name: # type: sq_string # elements: 1 # length: 10 tfpolyones # name: # type: sq_string # elements: 1 # length: 59 Return (pxm) cell of tfpoly([1]). For internal use only. # name: # type: sq_string # elements: 1 # length: 33 Return (pxm) cell of tfpoly([1]). # name: # type: sq_string # elements: 1 # length: 11 tfpolyzeros # name: # type: sq_string # elements: 1 # length: 59 Return (pxm) cell of tfpoly([0]). For internal use only. # name: # type: sq_string # elements: 1 # length: 33 Return (pxm) cell of tfpoly([0]). # name: # type: sq_string # elements: 1 # length: 3 zpk # name: # type: sq_string # elements: 1 # length: 1373 -- Function File: S = zpk ("S") -- Function File: Z = zpk ("Z", TSAM) -- Function File: SYS = zpk (SYS) -- Function File: SYS = zpk (K) -- Function File: SYS = zpk (Z, P, K, ...) -- Function File: SYS = zpk (Z, P, K, TSAM, ...) -- Function File: SYS = zpk (Z, P, K, TSAM, ...) Create transfer function model from zero-pole-gain data. This is just a stop-gap compatibility wrapper since zpk models are not yet implemented. *Inputs* SYS LTI model to be converted to transfer function. Z Cell of vectors containing the zeros for each channel. z{i,j} contains the zeros from input j to output i. In the SISO case, a single vector is accepted as well. P Cell of vectors containing the poles for each channel. p{i,j} contains the poles from input j to output i. In the SISO case, a single vector is accepted as well. K Matrix containing the gains for each channel. k(i,j) contains the gain from input j to output i. TSAM Sampling time in seconds. If TSAM is not specified, a continuous-time model is assumed. ... Optional pairs of properties and values. Type `set (tf)' for more information. *Outputs* SYS Transfer function model. See also: tf, ss, dss, frd # name: # type: sq_string # elements: 1 # length: 56 Create transfer function model from zero-pole-gain data.