Substitution by usubs
If an uncertain matrix or model object (umat
, uss
, ufrd
) has many uncertain parameters, it is often useful to freeze some, but not all, of the uncertain parameters to specific values for analysis. The usubs
command 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. For example, can create three uncertain real parameters and use them to create a 2-by-2 uncertain matrix, A
.
delta = ureal('delta',2); eta = ureal('eta',6); rho = ureal('rho',-1); A = [3+delta+eta delta/eta;7+rho rho+delta*eta]
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 and "A.Uncertainty" to interact with the uncertain elements.
Use usubs
to substitute the uncertain element named delta
in A
with the value 2.3, leaving all other uncertain elements intact. That the result, B
, is an uncertain matrix with dependence only on eta
and rho
.
B = usubs(A,'delta',2.3)
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 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 code creates identical uncertain matrices B1
and B2
. In each case, you replace delta
by 2.3, and eta
by the uncertain real parameter A.Uncertainty.rho
.
B1 = usubs(A,'delta',2.3,'eta',A.Uncertainty.rho)
Uncertain matrix with 2 rows and 2 columns. The uncertainty consists of the following blocks: rho: Uncertain real, nominal = -1, variability = [-1,1], 4 occurrences Type "B1.NominalValue" to see the nominal value and "B1.Uncertainty" to interact with the uncertain elements.
S.delta = 2.3; S.eta = A.Uncertainty.rho; B2 = usubs(A,S)
Uncertain matrix with 2 rows and 2 columns. The uncertainty consists of the following blocks: rho: Uncertain real, nominal = -1, variability = [-1,1], 4 occurrences Type "B2.NominalValue" to see the nominal value and "B2.Uncertainty" to interact with the uncertain elements.
usubs
ignores substitutions that do not match uncertain parameters in the model or matrix. For example, the following returns an uncertain matrix that is the same as A
.
B3 = usubs(A,'fred',5);
Specifying the Substitution with Structures
An alternative syntax for usubs
is to specify the substituted values in a structure, whose field names are the names of the elements being substituted with values. For example, create a structure NV
with fields delta
and eta
. Set the values of these fields to be the desired values for substitution. Then perform the substitution with usubs
.
NV.delta = 2.3; NV.eta = A.Uncertainty.rho; B4 = usubs(A,NV)
Uncertain matrix with 2 rows and 2 columns. The uncertainty consists of the following blocks: rho: Uncertain real, nominal = -1, variability = [-1,1], 4 occurrences Type "B4.NominalValue" to see the nominal value and "B4.Uncertainty" to interact with the uncertain elements.
Here, B4
is the same as B1
and B2
above. Again, any superfluous fields are ignored. Therefore, adding an additional field gamma
to NV
does not alter the result of substitution.
NV.gamma = 0; B5 = usubs(A,NV)
Uncertain matrix with 2 rows and 2 columns. The uncertainty consists of the following blocks: rho: Uncertain real, nominal = -1, variability = [-1,1], 4 occurrences Type "B5.NominalValue" to see the nominal value and "B5.Uncertainty" to interact with the uncertain elements.
B5
is the same as B4
.
Analysis commands such as wcgain
, robstab
, and usample
all return substitutable values in this structure format.
Nominal and Random Values
To fix specified elements to their nominal values, use the replacement value 'Nominal'
. To set an element to a random value, use 'Random'
. For example, create a numeric matrix by fixing uncertain parameters in A
: Set eta
to its nominal value, set delta
to a random value, and set rho
to 6.5.
B6 = usubs(A,'eta','Nominal','delta','Random','rho',6.5)
B6 = 2×2
11.6294 0.4382
13.5000 22.2767
In the structure format, to set an uncertain element to its nominal value, set the corresponding value in the structure.
S = struct('eta',A.Uncertainty.eta.NominalValue,'rho',6.5); B7 = usubs(A,S)
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 Type "B7.NominalValue" to see the nominal value and "B7.Uncertainty" to interact with the uncertain elements.
Use usample
to set the remaining element to a random value.
B8 = usample(B7,'delta',1)
B8 = 2×2
11.8116 0.4686
13.5000 23.3695