Documentation

This is machine translation

Mouseover text to see original. Click the button below to return to the English version of the page.

Estimate Models Using armax

This example shows how to estimate a linear, polynomial model with an ARMAX structure for a three-input and single-output (MISO) system using the iterative estimation method `armax`. For a summary of all available estimation commands in the toolbox, see Model Estimation Commands.

Load a sample data set `z8` with three inputs and one output, measured at `1` -second intervals and containing 500 data samples.

`load iddata8`

Use `armax` to both construct the `idpoly` model object, and estimate the parameters:

`$A\left(q\right)y\left(t\right)=\sum _{i=1}^{nu}{B}_{i}\left(q\right){u}_{i}\left(t-n{k}_{i}\right)+C\left(q\right)e\left(t\right)$`

Typically, you try different model orders and compare results, ultimately choosing the simplest model that best describes the system dynamics. The following command specifies the estimation data set, `z8` , and the orders of the A , B , and C polynomials as `na` , `nb` , and `nc`, respectively. `nk` of `[0 0 0]` specifies that there is no input delay for all three input channels.

```opt = armaxOptions; opt.Focus = 'simulation'; opt.SearchOptions.MaxIterations = 50; opt.SearchOptions.Tolerance = 1e-5; na = 4; nb = [3 2 3]; nc = 4; nk = [0 0 0]; m_armax = armax(z8, [na nb nc nk], opt);```

`Focus`, `Tolerance`, and `MaxIter` are estimation options that configure the estimation objective function and the attributes of the search algorithm. The `Focus` option specifies whether the model is optimized for simulation or prediction applications. The `Tolerance` and `MaxIter` search options specify when to stop estimation. For more information about these properties, see the `armaxOptions` reference page.

`armax` is a version of `polyest` with simplified syntax for the ARMAX model structure. The `armax` method both constructs the `idpoly` model object and estimates its parameters.

View information about the resulting model object.

`m_armax`
```m_armax = Discrete-time ARMAX model: A(z)y(t) = B(z)u(t) + C(z)e(t) A(z) = 1 - 1.284 z^-1 + 0.3048 z^-2 + 0.2648 z^-3 - 0.05708 z^-4 B1(z) = -0.07547 + 1.087 z^-1 + 0.7166 z^-2 B2(z) = 1.019 + 0.1142 z^-1 B3(z) = -0.06739 + 0.06828 z^-1 + 0.5509 z^-2 C(z) = 1 - 0.06096 z^-1 - 0.1296 z^-2 + 0.02489 z^-3 - 0.04699 z^-4 Sample time: 1 seconds Parameterization: Polynomial orders: na=4 nb=[3 2 3] nc=4 nk=[0 0 0] Number of free coefficients: 16 Use "polydata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using ARMAX on time domain data "z8". Fit to estimation data: 80.86% (simulation focus) FPE: 2.888, MSE: 0.9868 ```

`m_armax` is an `idpoly` model object. The coefficients represent estimated parameters of this polynomial model. You can use `present(m_armax)` to show additional information about the model, including parameter uncertainties.

View all property values for this model.

`get(m_armax)`
``` A: [1 -1.2836 0.3048 0.2648 -0.0571] B: {[-0.0755 1.0870 0.7166] [1.0188 0.1142] [1x3 double]} C: [1 -0.0610 -0.1296 0.0249 -0.0470] D: 1 F: {  } IntegrateNoise: 0 Variable: 'z^-1' IODelay: [0 0 0] Structure: [1x1 pmodel.polynomial] NoiseVariance: 2.7984 Report: [1x1 idresults.polyest] InputDelay: [3x1 double] OutputDelay: 0 Ts: 1 TimeUnit: 'seconds' InputName: {3x1 cell} InputUnit: {3x1 cell} InputGroup: [1x1 struct] OutputName: {'y1'} OutputUnit: {''} OutputGroup: [1x1 struct] Notes: [0x1 string] UserData: [] Name: '' SamplingGrid: [1x1 struct] ```

The `Report` model property contains detailed information on the estimation results. To view the properties and values inside `Report`, use dot notation. For example:

`m_armax.Report`
```ans = Status: 'Estimated using ARMAX with simulation focus' Method: 'ARMAX' InitialCondition: 'zero' Fit: [1x1 struct] Parameters: [1x1 struct] OptionsUsed: [1x1 idoptions.polyest] RandState: [1x1 struct] DataUsed: [1x1 struct] Termination: [1x1 struct] ```

This action displays the contents of estimation report such as model quality measures (`Fit`), search termination criterion (`Termination`), and a record of estimation data (`DataUsed`) and options (`OptionsUsed`).

Related Examples 