If an uncertain object (
has many uncertain parameters, it is often necessary to freeze some,
but not all, of the uncertain parameters to specific values. The
accomplishes this, and also allows more complicated substitutions
for an element.
usubs accepts a list
of element names, and respective values to substitute for them. You
can create three uncertain real parameters and use them to create
a 2-by-2 uncertain matrix
delta = ureal('delta',2); eta = ureal('eta',6); rho = ureal('rho',-1); A = [3+delta+eta delta/eta;7+rho rho+delta*eta]
A = Uncertain matrix with 2 rows and 2 columns. The uncertainty consists of the following blocks: delta: Uncertain real, nominal = 2, variability = [-1,1], 2 occurrences eta: Uncertain real, nominal = 6, variability = [-1,1], 3 occurrences rho: Uncertain real, nominal = -1, variability = [-1,1], 1 occurrences Type "A.NominalValue" to see the nominal value, "get(A)" to see all properties, and "A.Uncertainty" to interact with the uncertain elements.
usubs to substitute
the uncertain element named
the value 2.3, leaving all other uncertain elements intact. Note that
B, is an uncertain matrix with dependence
B = usubs(A,'delta',2.3)
B = Uncertain matrix with 2 rows and 2 columns. The uncertainty consists of the following blocks: eta: Uncertain real, nominal = 6, variability = [-1,1], 3 occurrences rho: Uncertain real, nominal = -1, variability = [-1,1], 1 occurrences Type "B.NominalValue" to see the nominal value, "get(B)" to see all properties, and "B.Uncertainty" to interact with the uncertain elements.
To set multiple elements, list individually, or group the values in a data structure. For instance, the following are the same.
B1 = usubs(A,'delta',2.3,'eta',A.Uncertainty.rho); S.delta = 2.3; S.eta = A.Uncertainty.rho; B2 = usubs(A,S);
In each case,
delta is replaced by 2.3, and
Any superfluous substitution requests are ignored. Hence, the
following returns an uncertain model that is the same as
B4 = usubs(A,'fred',5);
An alternative syntax for
to specify the substituted values in a structure, whose fieldnames
are the names of the elements being substituted with values.
Create a structure
NV with 2 fields,
Set the values of these fields to be the desired substituted values.
Then perform the substitution with
NV.delta = 2.3; NV.eta = A.Uncertainty.rho; B6 = usubs(A,NV);
B6 is the same as
Again, any superfluous fields are ignored. Therefore, adding an additional
NV, and substituting
does not alter the result.
NV.gamma = 0; B7 = usubs(A,NV);
B7 is the same as
If the replacement value is the (partial and case-independent)
'Nominal', then the listed element are replaced
with their nominal values. Therefore
B8 = usubs(A,fieldnames(A.Uncertainty),'nom')
B8 = 11.0000 0.3333 6.0000 11.0000
B9 = A.NominalValue
B9 = 11.0000 0.3333 6.0000 11.0000
are the same. It is possible to only set some of the elements
NominalValues, and would be the typical use
usubs with the
eta to its
delta to a random value (within
its range) and
rho to a specific value, say 6.5
B10 = usubs(A,'eta','nom','delta','rand','rho',6.5)
B10 = 10.5183 0.2531 13.5000 15.6100
may not be used in the structure format. However, explicitly setting
a field of the structure to an element's nominal value, and then following
(or preceeding) the call to
a call to
usample (to generate
the random samples) is acceptable, and achieves the same effect.