Documentation

This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

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.

Substitution by usubs

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); ```

Specifying the Substitution with Structures

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.

Nominal and Random Values

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.

Related Topics

Was this topic helpful?

Get trial now