## Uncertain LTI Dynamics Elements

Uncertain linear, time-invariant objects, `ultidyn`, are used to represent unknown linear, time-invariant dynamics, whose only known attributes are bounds on their frequency response.

### Create Uncertain LTI Dynamics

You can create a 1-by-1 (scalar) positive-real uncertain linear dynamics element, whose frequency response always has real part greater than -0.5. Set the `SampleStateDimension` property to 5. Plot a Nyquist plot of 30 instances of the element.

```g = ultidyn('g',[1 1],'Type','Positivereal','Bound',-0.5); g.SampleStateDimension = 5;```
```nyquist(usample(g,30)) xlim([-2 10]) ylim([-6 6]);```

### Properties of `ultidyn` Elements

Uncertain linear, time-invariant objects have an internal name (the `Name` property), and are created by specifying their size (number of outputs and number of inputs).

The property `Type` specifies whether the known attributes about the frequency response are related to gain or phase. The property `Type` may be `'GainBounded'` or `'PositiveReal'`. The default value is `'GainBounded'`.

The property `Bound` is a single number, which along with `Type`, completely specifies what is known about the uncertain frequency response. Specifically, if Δ is an `ultidyn` element, and if γ denotes the value of the `Bound` property, then the element represents the set of all stable, linear, time-invariant systems whose frequency response satisfies certain conditions:

If `Type` is `'GainBounded'`, $\stackrel{˙}{\overline{\sigma }}\left[\Delta \left(\omega \right)\right]\le \gamma$ for all frequencies. When `Type` is `'GainBounded'`, the default value for `Bound` (i.e., γ) is 1. The `NominalValue` of Δ is always the 0-matrix.

If `Type` is `'PositiveReal'`, Δ(ω) + Δ*(ω) ≥ 2γ· for all frequencies. When `Type` is `'PositiveReal'`, the default value for `Bound` (i.e., γ) is 0. The `NominalValue` is always (γ + 1 +2|γ|)I.

All properties of a `ultidyn` are accessible with `get` and `set` (although the `NominalValue` is determined from `Type` and `Bound`, and not accessible with `set`). The properties are

Properties

Meaning

Class

`Name`

Internal Name

`char`

`NominalValue`

Nominal value of element

`See above`

`Type`

`'GainBounded'```` |````'PositiveReal'`

`char`

`Bound`

Norm bound or minimum real

`scalar double`

`SampleStateDimension`

State-space dimension of random samples of this uncertain element

`scalar double`

`SampleMaxFrequency`

Maximum natural frequency for random sampling

`scalar double`

`AutoSimplify`

`'off'```` | {````'basic'````} |````'full'`

`char`

The `SampleStateDim` property specifies the state dimension of random samples of the element when using `usample`. The default value is 1. The `AutoSimplify` property serves the same function as in the uncertain real parameter.

### Time Domain of `ultidyn` Elements

On its own, every `ultidyn` element is interpreted as a continuous-time, system with uncertain behavior, quantified by bounds (gain or real-part) on its frequency response. However, when a `ultidyn` element is an uncertain element of an uncertain state space model (`uss`), then the time-domain characteristic of the element is determined from the time-domain characteristic of the system. The bounds (gain-bounded or positivity) apply to the frequency-response of the element.

### Interpreting Uncertainty in Discrete Time

The interpretation of a `ultidyn` element as a continuous-time or discrete-time system depends on the nature of the uncertain system (`uss`) within which it is an uncertain element.

For example, create a scalar `ultidyn` object. Then, create two 1-input, 1-output uss objects using the `ultidyn` object as their “D” matrix. In one case, create without specifying sample-time, which indicates continuous time. In the second case, force discrete-time, with a sample time of 0.42.

```delta = ultidyn('delta',[1 1]); sys1 = uss([],[],[],delta) USS: 0 States, 1 Output, 1 Input, Continuous System delta: 1x1 LTI, max. gain = 1, 1 occurrence sys2 = uss([],[],[],delta,0.42) USS: 0 States, 1 Output, 1 Input, Discrete System, Ts = 0.42 delta: 1x1 LTI, max. gain = 1, 1 occurrence ```

Next, get a random sample of each system. When obtaining random samples using `usample`, the values of the elements used in the sample are returned in the 2nd argument from `usample` as a structure.

```[sys1s,d1v] = usample(sys1); [sys2s,d2v] = usample(sys2); ```

Look at `d1v.delta.Ts` and `d2v.delta.Ts`. In the first case, since `sys1` is continuous-time, the system `d1v.delta` is continuous-time. In the second case, since `sys2` is discrete-time, with sample time 0.42, the system `d2v.delta` is discrete-time, with sample time 0.42.

```d1v.delta.Ts ans = 0 d2v.delta.Ts ans = 0.4200 ```

Finally, in the case of a discrete-time `uss` object, it is not the case that `ultidyn` objects are interpreted as continuous-time uncertainty in feedback with sampled-data systems. This very interesting hybrid theory is beyond the scope of the toolbox.