Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

If an uncertain object (`umat`

, `uss`

, `ufrd`

) has many uncertain parameters, it is
often necessary to freeze some, but not all, of the uncertain parameters to specific values.
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. You 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]

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.

Use `usubs`

to substitute the uncertain element named
`delta`

in `A`

with the value 2.3, leaving all other
uncertain elements intact. Note that the result, `B`

, is an uncertain matrix
with dependence only on `eta`

and `rho`

.

```
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 `eta`

is
replaced by `A.Uncertainty.rho`

.

Any superfluous substitution requests are ignored. Hence, the following returns an
uncertain model that is the same as `A`

.

```
B4 = usubs(A,'fred',5);
```

An alternative syntax for `usubs`

is 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, `delta`

and
`eta`

. Set the values of these fields to be the desired substituted
values. Then perform the substitution with `usubs`

.

NV.delta = 2.3; NV.eta = A.Uncertainty.rho; B6 = usubs(A,NV);

Here, `B6`

is the same as `B1`

and
`B2`

above. Again, any superfluous fields are ignored. Therefore, adding
an additional field `gamma`

to `NV`

, and substituting does
not alter the result.

NV.gamma = 0; B7 = usubs(A,NV);

Here, `B7`

is the same as `B6`

.

Analysis commands such as `wcgain`

, `robstab`

and `usample`

all return substitutable values in
this structure format. More discussion can be found in Substitute Uncertain Elements to Create Arrays.

If the replacement value is `'Nominal'`

(or a shortened version such as
`'Nom'`

), 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 to
`NominalValues`

, and would be the typical use of `usubs`

with the `'nominal'`

argument.

Within `A`

, set `eta`

to its nominal value,
`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

Unfortunately, the `'nominal'`

and `'Random'`

specifiers 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
`usubs`

with a call to `usample`

(to generate the random samples) is acceptable, and achieves the same
effect.

Was this topic helpful?