# ssregest

Estimate state-space model by reduction of regularized ARX model

## Syntax

• `sys = ssregest(data,nx)` example
• `sys = ssregest(data,nx,Name,Value)` example
• `sys = ssregest(___,opt)` example
• `[sys,x0] = ssregest(___)` example

## Description

example

````sys = ssregest(data,nx)` estimates a state-space model by reduction of a regularized ARX model.```

example

````sys = ssregest(data,nx,Name,Value)` specifies additional options using one or more `Name,Value` pair arguments.```

example

````sys = ssregest(___,opt)` specifies estimation options that configure the estimation objective, ARX orders, and order reduction options. This syntax can include any of the input argument combinations in the previous syntaxes.```

example

````[sys,x0] = ssregest(___)` returns the value of initial states computed during estimation. This syntax can include any of the input argument combinations in the previous syntaxes.```

## Examples

collapse all

### Estimate a State-Space Model by Reduction of Regularized ARX Model

```load iddata2 z2; ```

`z2` is an `iddata` object that contains time-domain system response data.

Identify a third-order state-space model.

`sys = ssregest(z2,3);`

### Estimate State-Space Model With Input Delay

```load iddata2 z2 ```

Estimate a third-order state-space model with input delay.

`sys = ssregest(z2,3,'InputDelay',2);`

### Configure the ARX Orders and Estimation Focus

```load iddata2 z2; ```

Specify the order of the regularized ARX model used by the software during estimation. Also, set the estimation focus to simulation.

```opt = ssregestOptions('ARXOrder',[100 100 1],'Focus','simulation'); ```

Identify a third-order state-space model.

`sys = ssregest(z2,3,opt);`

### Return Initial State Values Computed During Estimation

```load iddata2 z2; ```

Obtain the initial state values when identifying a third-order state-space model.

`[sys,x0] = ssregest(z2,3);`

### Compare State-Space Models Estimated Using Regularized Impulse Response and Regularized Reduction of ARX Model

`load regularizationExampleData eData;`

Create a transfer function model used for generating the estimation data (true system).

`trueSys = idtf([0.02008 0.04017 0.02008],[1 -1.561 0.6414],1); `

Obtain regularized impulse response (FIR) model.

```opt = impulseestOptions('RegulKernel', 'DC'); m0 = impulseest(eData, 70, opt); ```

Convert the model into a transfer function model after reducing the order.

`m = balred(idss(m0),15);`

Obtain a state-space model using regularized reduction of ARX model.

`m1 = ssregest(eData,15);`

Compare the impulse responses of the true system, regularized and state-space models.

`impulse(trueSys, m, m1, 50);`

## Input Arguments

collapse all

### `data` — Estimation data`iddata` | `idfrd` | `frd`

Estimation data, specified as an `iddata`, `idfrd` or `frd` object.

For time-domain estimation, `data` must be an `iddata` object containing the input and output signal values.

For frequency-domain estimation, `data` can be one of the following:

• Recorded frequency response data (`frd` or `idfrd`)

• `iddata` object with its properties specified as follows:

• `InputData` — Fourier transform of the input signal

• `OutputData` — Fourier transform of the output signal

• `Domain``'Frequency'`

The sample time `Ts` of the `iddata` object must be nonzero.

### `nx` — Order of estimated modelpositive scalar | positive vector | `'best'`

Order of the estimated model, specified as a positive scalar or vector.

If `nx` is a vector, then `ssregest` creates a plot which you can use to choose a suitable model order. The plot shows the Hankel singular values for models of chosen values in the vector. States with relatively small Hankel singular values can be safely discarded. A default choice is suggested in the plot.

You can also specify `nx = 'best'`, as in `ssregest(data,'best')`, in which case the optimal order is chosen automatically in the 1:10 range.

### `opt` — Options set for `ssregest``ssregestOptions` options set

Estimation options for `ssregest`, specified as an options set you create using `ssregestOptions`.

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: `sys = ssregest(z2,3,'InputDelay',2)` specifies a delay of 2 sampling periods.

### `'Ts'` — Sample time sample time of data (`data.Ts`) (default) | positive scalar | 0

Sample time of the model, specified as 0 or equal to the sample time of `data`.

For continuous-time models, use `Ts = 0`. For discrete-time models, specify `Ts` as a positive scalar whose value is equal to the data sample time.

### `'InputDelay'` — Input delays0 (default) | scalar | vector

Input delay for each input channel, specified as a numeric vector. For continuous-time systems, specify input delays in the time unit stored in the `TimeUnit` property. For discrete-time systems, specify input delays in integer multiples of the sample time `Ts`. For example, `InputDelay = 3` means a delay of three sampling periods.

For a system with `Nu` inputs, set `InputDelay` to an `Nu`-by-1 vector. Each entry of this vector is a numerical value that represents the input delay for the corresponding input channel.

You can also set `InputDelay` to a scalar value to apply the same delay to all channels.

### `'Form'` — Type of canonical form`'free'` (default) | `'modal'` | `'companion'` | `'canonical'`

Type of canonical form of `sys`, specified as one of the following strings:

• `'modal'` — Obtain `sys` in modal form.

• `'companion'` — Obtain `sys` in companion form.

• `'free'` — All entries of the A, B and C matrices are treated as free.

• `'canonical'` — Obtain `sys` in the observability canonical form [1].

Use the `Form`, `Feedthrough` and `DisturbanceModel` name-value pair arguments to modify the default behavior of the A, B, C, D, and K matrices.

### `'Feedthrough'` — Direct feedthrough from input to output`0` (default) | `1` | logical vector

Direct feedthrough from input to output, specified as a logical vector of length Nu, where Nu is the number of inputs. If `Feedthrough` is specified as a logical scalar, it is applied to all the inputs.

Use the `Form`, `Feedthrough` and `DisturbanceModel` name-value pair arguments to modify the default behavior of the A, B, C, D, and K matrices.

### `'DisturbanceModel'` — Specify whether to estimate the K matrix`'estimate'` (default) | `'none'`

Specify whether to estimate the K matrix which specifies the noise component, specified as one of the following strings:

• `'none'` — Noise component is not estimated. The value of the K matrix is fixed to zero value.

• `'estimate'` — The K matrix is treated as a free parameter.

`DisturbanceModel` must be `'none'` when using frequency-domain data.

Use the `Form`, `Feedthrough` and `DisturbanceModel` name-value pair arguments to modify the default behavior of the A, B, C, D, and K matrices.

## Output Arguments

collapse all

### `sys` — Estimated state-space model`idss`

Estimated state-space model of order `nx`, returned as an `idss` model object. The model represents:

$\begin{array}{l}\stackrel{˙}{x}\left(t\right)=Ax\left(t\right)+Bu\left(t\right)+Ke\left(t\right)\\ y\left(t\right)=Cx\left(t\right)+Du\left(t\right)+e\left(t\right)\end{array}$

A, B, C, D, and K are state-space matrices. u(t) is the input, y(t) is the output, e(t) is the disturbance and x(t) is the vector of `nx` states.

All the entries of A, B, C, and K are free estimable parameters by default. D is fixed to zero by default, meaning that there is no feedthrough, except for static systems (`nx=0`).

### `x0` — Initial states computed during estimationscalar | matrix

Initial states computed during estimation, returned as a scalar. If `data` contains multiple experiments, then `x0` is a matrix with each column corresponding to an experiment.

This value is also stored in the `Parameters` field of the model's `Report` property.

collapse all

### Modal Form

In modal form, A is a block-diagonal matrix. The block size is typically 1-by-1 for real eigenvalues and 2-by-2 for complex eigenvalues. However, if there are repeated eigenvalues or clusters of nearby eigenvalues, the block size can be larger.

For example, for a system with eigenvalues $\left({\lambda }_{1},\sigma ±j\omega ,{\lambda }_{2}\right)$, the modal A matrix is of the form

$\left[\begin{array}{cccc}{\lambda }_{1}& 0& 0& 0\\ 0& \sigma & \omega & 0\\ 0& -\omega & \sigma & 0\\ 0& 0& 0& {\lambda }_{2}\end{array}\right]$

### Companion Form

In the companion realization, the characteristic polynomial of the system appears explicitly in the right-most column of the A matrix. For a system with characteristic polynomial

$p\left(s\right)={s}^{n}+{\alpha }_{1}{s}^{n-1}+\dots +{\alpha }_{n-1}s+{\alpha }_{n}$

the corresponding companion A matrix is

$A=\left[\begin{array}{cccccc}0& 0& ..& ..& 0& -{\alpha }_{n}\\ 1& 0& 0& ..& 0& -{\alpha }_{n}-1\\ 0& 1& 0& .& :& :\\ :& 0& .& .& :& :\\ 0& .& .& 1& 0& -{\alpha }_{2}\\ 0& ..& ..& 0& 1& -{\alpha }_{1}\end{array}\right]$

The companion transformation requires that the system be controllable from the first input. The companion form is poorly conditioned for most state-space computations; avoid using it when possible.

### Tips

• `ssregest` function provides improved accuracy than `n4sid` for short, noisy data sets.

• For some problems, the quality of fit using `n4sid` is sensitive to options, such as `N4Horizon`, whose values can be difficult to determine. In comparison, the quality of fit with `ssregest` is less sensitive to its options, which makes `ssregest` simpler to use.

### Algorithms

`ssregest` estimates a regularized ARX model and converts the ARX model to a state-space model. The software then uses balanced model reduction techniques to reduce the state-space model to the specified order.

## References

[1] Ljung, L. System Identification: Theory For the User, Second Edition, Appendix 4A, pp 132-134, Upper Saddle River, N.J: Prentice Hall, 1999.