ControlDesign
ReduceSystem
remove the structural unobservable and uncontrollable states for a given state-space system
Calling Sequence
Parameters
Options
Description
Examples
ReduceSystem(sys, opts)
sys
-
System; system object
opts
(optional) equation(s) of the form option = value; specify options for the ReduceSystem command
reducedtype = minimal, controllable, or observable
Specifies how sys is reduced. If equal to minimal, both structural unobservable and uncontrollable states are removed and the resulting system is structurally minimal (both controllable and observable). This is the default. If equal to controllable, structural uncontrollable states are removed and the resulting system is controllable. If equal to observable, structural unobservable states are removed and the resulting system is observable.
output = reducedsys or states, or list of these names
Specifies the returned values. If equal to reducedsys, then the reduced system object is returned. This is the default. If equal to states, then a list of the remaining states in the reduced system is returned. If a list of these names, then the output is a sequence/list (see returnlist) with each name replaced with the corresponding value.
returnlist = truefalse
True means return a list; false means return an expression sequence. The default is false.
The ReduceSystem command detects and removes the structural unobservable and uncontrollable states of system sys.
The system sys is a continuous or discrete time linear system object created using the DynamicSystems package. The system object must be in state-space (SS) form. The state-space system can be either single-input/single-output (SISO) or multiple-input/multiple-output (MIMO).
The structural unobservable and uncontrollable states are removed by analyzing the zero entries of the system matrix (sys:-a), the control matrix (sys:-b) and the output matrix (sys:-c).
The resulting state-space system will contain a subset of the states of sys, preserving the state structure and variable names. The input/output response or transfer function of the resulting system will be equivalent to the transfer function of sys.
Structural uncontrollable and/or unobservable states may occur, for example, as a result of extracting a subsystem from a subset of its inputs and/or outputs (see DynamicSystems[Subsystem]).
The ReduceSystem command returns a system object in state-space (SS) form of the resulting (reduced/structurally minimal) system. Depending on the value of the output option, either the reduced state-space system or the remaining states list (or both), is returned.
with⁡ControlDesign:
with⁡DynamicSystems:
Here is a state-space system corresponding to a DC motor model:
sys_a≔Matrix⁡−dJ,KJ,0,−KL,−RL,0,1,0,0:
sys_b≔Matrix⁡0,1J,1L,0,0,0:
sys_c≔Matrix⁡0,1,0,1,0,0,0,0,1:
sys_d≔Matrix⁡0,0,0,0,0,0:
sys≔StateSpace⁡sys_a,sys_b,sys_c,sys_d,inputvariable=V⁡t,T⁡t,outputvariable=i_out⁡t,omega_out⁡t,theta_out⁡t,statevariable=ω⁡t,i⁡t,θ⁡t,parameters=J=0.01,K=0.01,L=0.5,R=1,d=0.1:PrintSystem⁡sys
State Spacecontinuous3 output(s); 2 input(s); 3 state(s)inputvariable=V⁡t,T⁡toutputvariable=i_out⁡t,omega_out⁡t,theta_out⁡tstatevariable=ω⁡t,i⁡t,θ⁡ta=−dJKJ0−KL−RL0100b=01J1L000c=010100001d=000000
This system is observable and controllable:
Controllable⁡sys
true
Observable⁡sys
Extract a subsystem with the two first outputs only (ignore the angular position output):
sys_sub≔Subsystem⁡sys,all,1,2,all:
PrintSystem⁡sys_sub
State Spacecontinuous2 output(s); 2 input(s); 3 state(s)inputvariable=V⁡t,T⁡toutputvariable=i_out⁡t,omega_out⁡tstatevariable=ω⁡t,i⁡t,θ⁡ta=−dJKJ0−KL−RL0100b=01J1L000c=010100d=0000
This subsystem still has 3 states, but one of them is not observable anymore:
Controllable⁡sys_sub
Observable⁡sys_sub
false
Reduce this subsystem to remove the structural unobservable state:
sys_min≔ReduceSystem⁡sys_sub:
PrintSystem⁡sys_min
State Spacecontinuous2 output(s); 2 input(s); 2 state(s)inputvariable=V⁡t,T⁡toutputvariable=i_out⁡t,omega_out⁡tstatevariable=ω⁡t,i⁡ta=−dJKJ−KL−RLb=01J1L0c=0110d=0000
Optionally, the indices of the states of the reduced system can be obtained along with the reduced system:
sys_min,kept_states≔ReduceSystem⁡sys_sub,:-output=reducedsys,states
sys_min,kept_states≔State Spacecontinuous2 output(s); 2 input(s); 2 state(s)inputvariable=V⁡t,T⁡toutputvariable=i_out⁡t,omega_out⁡tstatevariable=ω⁡t,i⁡t,1,2
The resulting system has two states and is now controllable and observable:
Controllable⁡sys_min
Observable⁡sys_min
See Also
ControlDesign[Kalman]
ControlDesign[LQR]
ControlDesign[LQRContinuous]
ControlDesign[LQRDiscrete]
ControlDesign[LQROutput]
ControlDesign[StateFeedback][Ackermann]
ControlDesign[StateFeedback][Observer]
ControlDesign[StateFeedback][PolePlacement]
ControlDesign[StateObserver][PolePlacement]
DynamicSystems[Subsystem]
Download Help Document