Uncertain State-Space Models
Uncertain state-space (uss
) models are linear systems with uncertain
state-space matrices and/or uncertain linear dynamics. Like their numeric (i.e., not
uncertain) counterpart, the ss
model object, you can build them from
state-space matrices using the ss
command. When one or more of the
state-space matrices contain uncertain elements (uncertain Control Design Blocks), the result is a
uss
model object.
Combining uncertain systems with other uncertain systems (for example, using model
arithmetic, connect
, or feedback
) usually results in an uncertain system. You can also combine numeric
systems with uncertain systems. Usually the result is an uncertain system. The nominal value
of an uncertain system is an ss
model object.
In the example below, the A
, B
and
C
matrices are made up of uncertain real parameters. Packing them
together with the ss
command results in a continuous-time uncertain system.
Uncertain State-Space Model
To create an uncertain state-space model, you first use Control Design Blocks to create uncertain elements. Then, use the elements to specify the state-space matrices of the system.
For instance, create three uncertain real parameters and build state-spaces matrices from them.
p1 = ureal('p1',10,'Percentage',50); p2 = ureal('p2',3,'PlusMinus',[-.5 1.2]); p3 = ureal('p3',0); A = [-p1 p2; 0 -p1]; B = [-p2; p2+p3]; C = [1 0; 1 1-p3]; D = [0; 0];
The matrices constructed with uncertain parameters, A
, B
, and C
, are uncertain matrix (umat
) objects. Using them as inputs to ss
results in a 2-output, 1-input, 2-state uncertain system.
sys = ss(A,B,C,D)
Uncertain continuous-time state-space model with 2 outputs, 1 inputs, 2 states. The model uncertainty consists of the following blocks: p1: Uncertain real, nominal = 10, variability = [-50,50]%, 2 occurrences p2: Uncertain real, nominal = 3, variability = [-0.5,1.2], 2 occurrences p3: Uncertain real, nominal = 0, variability = [-1,1], 2 occurrences Type "sys.NominalValue" to see the nominal value and "sys.Uncertainty" to interact with the uncertain elements.
The display shows that the system includes the three uncertain parameters.
Properties of uss Objects
uss
models, like all model objects, include properties that store dynamics and model metadata. View the properties of an uncertain state-space model.
p1 = ureal('p1',10,'Percentage',50); p2 = ureal('p2',3,'PlusMinus',[-.5 1.2]); p3 = ureal('p3',0); A = [-p1 p2; 0 -p1]; B = [-p2; p2+p3]; C = [1 0; 1 1-p3]; D = [0; 0]; sys = ss(A,B,C,D); % create uss model get(sys)
NominalValue: [2x1 ss] Uncertainty: [1x1 struct] A: [2x2 umat] B: [2x1 umat] C: [2x2 umat] D: [2x1 double] E: [] StateName: {2x1 cell} StateUnit: {2x1 cell} InternalDelay: [0x1 double] InputDelay: 0 OutputDelay: [2x1 double] InputName: {''} InputUnit: {''} InputGroup: [1x1 struct] OutputName: {2x1 cell} OutputUnit: {2x1 cell} OutputGroup: [1x1 struct] Notes: [0x1 string] UserData: [] Name: '' Ts: 0 TimeUnit: 'seconds' SamplingGrid: [1x1 struct]
Most of the properties behave similarly to how they behave for ss
model objects. The NominalValue
property is itself an ss
model object. You can therefore analyze the nominal value as you would any state-space model. For instance, compute the poles and step response of the nominal system.
pole(sys.NominalValue)
ans = 2×1
-10
-10
step(sys.NominalValue)
As with the uncertain matrices (umat
), the Uncertainty
property is a structure containing the uncertain elements. You can use this property for direct access to the uncertain elements. For instance, check the Range
of the uncertain element named p2
within sys
.
sys.Uncertainty.p2.Range
ans = 1×2
2.5000 4.2000
Change the uncertainty range of p2
within sys
.
sys.Uncertainty.p2.Range = [2 4];
This command changes only the range of the parameter called p2
in sys
. It does not change the variable p2
in the MATLAB® workspace.
p2.Range
ans = 1×2
2.5000 4.2000
Lifting an ss to a uss
A not-uncertain state space object may be interpreted as an uncertain state space object
that has no dependence on uncertain elements. Use the uss
command to “lift” an ss
to the uss
class.
sys = rss(3,2,1); usys = uss(sys) USS: 3 States, 2 Outputs, 1 Input, Continuous System
Arrays of ss
objects can also be lifted. See Array Management for Uncertain Objects for more
information about how arrays of uncertain objects are handled.