# Decompose Uncertain Model Using lftdata

You decompose an uncertain model into a fixed certain part and normalized uncertain part using the docid:robust_ref.f10-120643 command. To see how this command works, create a 2-by-2 uncertain matrix (`umat`) using three uncertain real parameters.

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.

The `umat` `A` depends on two occurrences of `delta`, three occurrences of `eta`, and one occurrence of `rho`.

Decompose `A` into `M` and `Delta`.

[M,Delta] = lftdata(A);

`M` is a numeric matrix.

M

M = Columns 1 through 7 0 0 0 -0.1667 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 0 0 0 0 1.0000 0 0 0 -0.1667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.0000 1.0000 0 1.0000 -0.3333 0 0 11.0000 0 1.0000 0 0 2.0000 1.0000 6.0000 Column 8 0.1667 6.0000 0 0.1667 1.0000 1.0000 0.3333 11.0000

`Delta` is a `umat` with the same uncertainty dependence as `A`.

Delta

Delta = Uncertain matrix with 6 rows and 6 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 "Delta.NominalValue" to see the nominal value, "get(Delta)" to see all properties, and "Delta.Uncertainty" to interact with the uncertain elements.

To examine some of the characteristics of `Delta`, sample it at three points. Note that:

- The sampled value of
`Delta`is always diagonal. - The sampled values alway range between -1 and 1, because
`Delta`is normalized. - The sampled matrices each contain three independent values. Duplication of the entries is consistent with the dependence of
`Delta`and`A`on the three uncertain real parameters.

usample(Delta,3)

ans(:,:,1) = 0.6294 0 0 0 0 0 0 0.6294 0 0 0 0 0 0 0.8268 0 0 0 0 0 0 0.8268 0 0 0 0 0 0 0.8268 0 0 0 0 0 0 -0.4430 ans(:,:,2) = 0.8116 0 0 0 0 0 0 0.8116 0 0 0 0 0 0 0.2647 0 0 0 0 0 0 0.2647 0 0 0 0 0 0 0.2647 0 0 0 0 0 0 0.0938 ans(:,:,3) = -0.7460 0 0 0 0 0 0 -0.7460 0 0 0 0 0 0 -0.8049 0 0 0 0 0 0 -0.8049 0 0 0 0 0 0 -0.8049 0 0 0 0 0 0 0.9150

Verify that the maximum gain of `Delta` is 1.

maxnorm = wcnorm(Delta)

maxnorm = struct with fields: LowerBound: 0 UpperBound: 1.0008

Finally, verify that `lft(Delta,M)` is the same as `A`. To do so, take the difference, and use the `'full'` option in `simplify` to remove redundant dependencies on uncertain elements.

```
simplify(lft(Delta,M)-A,'full')
```

ans = 1.0e-17 * 0 -0.5156 0 0