Main Content

Uncertain real parameter

Use the `ureal`

uncertain element to represent real numbers whose
values are uncertain when modeling dynamic systems with uncertainty. An uncertain real
parameter has a nominal value, stored in the `NominalValue`

property, and an
uncertainty, which is the potential deviation from the nominal value. `ureal`

stores this deviation equivalently in three different properties:

`PlusMinus`

— The additive relative deviation from`NominalValue`

`Range`

— The absolute range of values, expressed as an interval containing`NominalValue`

`Percentage`

— The deviation expressed as a percentage of`NominalValue`

When you create an uncertain real parameter, you can specify the uncertainty in any of
these three ways. `ureal`

automatically calculates the appropriate values for
the other two properties.

You can combine `ureal`

uncertain parameters with numeric parameters to
create uncertain matrices (`umat`

) which you can then use to create uncertain
state-space models. Or you can use them as coefficients in transfer functions. When you use
uncertain real parameters to build uncertain dynamic systems, the result is an uncertain model
such as a `uss`

or `genss`

model.

`p = ureal(`

creates an uncertain real parameter with the specified nominal value and uncertainty of
±1. This syntax sets the `name`

,`nominalvalue`

)`Name`

and `NominalValue`

properties of the resulting `ureal`

object.

`p = ureal(`

sets the uncertainty to the specified deviations from the nominal value.
`name`

,`nominalvalue`

,'PlusMinus',`plusminus`

)`plusminus`

is a two-element vector of the form ```
[-DL
DR]
```

. The uncertain parameter takes values in the range
`[nominalvalue-DL,nominalvalue+DR]`

. If the range is symmetric around
the nominal value such that `DL = DR`

, you can use
`plusminus`

` = DR`

.

Using this syntax also sets the `Mode`

property of the resulting
`ureal`

object to `'PlusMinus'`

.

`p = ureal(`

sets the uncertainty to the specified absolute range. `name`

,`nominalvalue`

,'Range',`range`

)`range`

is a
two-element vector of the form `[LOW,HIGH]`

, and the nominal value must
fall in this range.

Using this syntax also sets the `Mode`

property of the resulting
`ureal`

object to `'Range'`

.

`p = ureal(`

sets the uncertainty in terms of percentage deviations from the nominal value.
`name`

,`nominalvalue`

,'Percentage',`percentage`

)`percentage`

is a two-element vector of the form
`[-PL,PR]`

. This syntax sets the lower and upper limits of the
uncertainty range such that `PL = 100*|1-LOW/nominalvalue|`

and ,
`PR = 100*|1-HIGH/nominalvalue|`

.

Using this syntax also sets the `Mode`

property of the resulting
`ureal`

object to `'Percentage'`

.

`p = ureal(`

sets additional properties using name-value pairs. You can specify multiple name-value
pairs. Enclose each property name in single quotes.`name`

,`nominalvalue`

,___,`Name,Value`

)

You can use `ureal`

parameters with functions for creating dynamic systems
such as `tf`

and `ss`

. You can also combine them with
existing dynamic systems models using model arithmetic or commands such as
`feedback`

. Doing so creates an uncertain state-space model. You can also
combine `ureal`

parameters using common arithmetic operations, which generally
results in an uncertain matrix (`umat`

). Use functions such as
`actual2normalized`

and `uscale`

to transform or scale
the amount of uncertainty in a `ureal`

parameter. You can also use commands
such as `usample`

or `usubs`

to replace real parameters
with fixed values. The `gridureal`

command evaluates a
`ureal`

parameter over its range and returns a grid of sampled values.

The following list contains a representative subset of the functions you can use with
`ureal`

parameter objects.

`actual2normalized` | Transform actual values to normalized values |

`append` | Group models by appending their inputs and outputs |

`feedback` | Feedback connection of multiple models |

`get` | Access model property values |

`getLimits` | Validity range for uncertain real (`ureal` )
parameters |

`getNominal` | Nominal value of uncertain model |

`gridureal` | Grid `ureal` parameters uniformly over their range |

`isuncertain` | Check whether argument is uncertain class type |

`normalized2actual` | Convert value for atom in normalized coordinates to corresponding actual value |

`replaceBlock` | Replace or update Control Design Blocks in Generalized LTI model |

`rsampleBlock` | Randomly sample Control Design blocks in generalized model |

`sampleBlock` | Sample Control Design blocks in generalized model |

`ss` | State-space model |

`tf` | Transfer function model |

`umat` | Create uncertain matrix |

`usample` | Generate random samples of uncertain or generalized model |

`uscale` | Scale uncertainty of block or system |

`usubs` | Substitute given values for uncertain elements of uncertain objects |

`ureal`

supports uncertainty that is skewed, or asymmetric around the nominal value. However, highly skewed ranges can lead to poor numeric conditioning and poor results. Therefore, for meaningful results, avoid highly skewed ranges where the nominal value is orders of magnitude closer to one end of the range than to the other.When the uncertainty range of a

`ureal`

parameter is not centered at its nominal value, there are restrictions on the range of values the parameter can take. For robust stability analysis, these restrictions mean that the smallest destabilizing perturbation of the parameter may be out of the reach of the specified`ureal`

model. Use`getLimits`

to find out the range of actual and normalized values that a`ureal`

parameter can take. For more information, see`getLimits`

.