You can estimate single-output and multiple-output ARX models using the `arx`

and `iv4`

commands. For information about the
algorithms, see Polynomial Model Estimation Algorithms.

You can use the following general syntax to both configure and estimate ARX models:

% Using ARX method m = arx(data,[na nb nk],opt); % Using IV method m = iv4(data,[na nb nk],opt);

`data`

is the estimation data and `[na nb nk]`

specifies the model orders, as discussed in What Are Polynomial Models?.

The third input argument `opt`

contains the options for configuring the
estimation of the ARX model, such as handling of initial conditions and input offsets. You
can create and configure the option set `opt`

using the `arxOptions`

and `iv4Options`

commands. The three input arguments
can also be followed by name and value pairs to specify optional model structure attributes
such as `InputDelay`

, `IODelay`

, and
`IntegrateNoise`

.

To get discrete-time models, use the time-domain data (`iddata`

object).

Continuous-time polynomials of ARX structure are not supported.

For more information about validating you model, see Validating Models After Estimation.

You can use `pem`

or `polyest`

to refine parameter
estimates of an existing polynomial model, as described in Refine Linear Parametric Models.

For detailed information about these commands, see the corresponding reference page.

You can use the estimated ARX model for initializing a nonlinear estimation at the command line, which improves the fit of the model. See Initialize Nonlinear ARX Estimation Using Linear Model.

`polyest`

to Estimate Polynomial ModelsYou can estimate any polynomial model using the iterative prediction-error estimation
method `polyest`

. For Gaussian disturbances of unknown
variance, this method gives the maximum likelihood estimate. The resulting models are stored
as `idpoly`

model objects.

Use the following general syntax to both configure and estimate polynomial models:

m = polyest(data,[na nb nc nd nf nk],opt,Name,Value);

where `data`

is the estimation data. `na`

,
`nb`

, `nc`

, `nd`

, `nf`

are integers that specify the model orders, and `nk`

specifies the input
delays for each input.For more information about model orders, see What Are Polynomial Models?.

You do not need to construct the model object using `idpoly`

before
estimation.

If you want to estimate the coefficients of all five polynomials,
*A*, *B*, *C*,
*D*, and *F*, you must specify an integer order for
each polynomial. However, if you want to specify an ARMAX model for example, which includes
only the *A*, *B*, and *C*
polynomials, you must set `nd`

and `nf`

to zero matrices
of the appropriate size. For some simpler configurations, there are dedicated estimation
commands such as `arx`

, `armax`

, `bj`

, and `oe`

, which deliver the required model by using just the required orders. For
example, `oe(data,[nb nf nk],opt)`

estimates an output-error structure
polynomial model.

In addition to the polynomial models listed in What Are Polynomial Models?, you can use `polyest`

to
model the ARARX structure—called the *generalized least-squares
model*—by setting `nc=nf=0`

. You can also model the
ARARMAX structure—called the *extended matrix model*—by
setting `nf=0`

.

The third input argument, `opt`

, contains the options for configuring
the estimation of the polynomial model, such as handling of initial conditions, input
offsets and search algorithm. You can create and configure the option set
`opt`

using the `polyestOptions`

command. The three input arguments can also be followed by name
and value pairs to specify optional model structure attributes such as
`InputDelay`

, `IODelay`

, and
`IntegrateNoise`

.

For ARMAX, Box-Jenkins, and Output-Error models—which can only be estimated using
the iterative prediction-error method—use the `armax`

,
`bj`

, and `oe`

estimation commands, respectively.
These commands are versions of `polyest`

with simplified syntax for these
specific model structures, as follows:

m = armax(Data,[na nb nc nk]); m = oe(Data,[nb nf nk]); m = bj(Data,[nb nc nd nf nk]);

Similar to `polyest`

, you can specify as input arguments the option
set configured using commands `armaxOptions`

, `oeOptions`

, and `bjOptions`

for the estimators `armax`

, `oe`

, and `bj`

respectively. You can also use name and value pairs to configure additional
model structure attributes.

If your data is sampled fast, it might help to apply a lowpass filter to the data
before estimating the model, or specify a frequency range for the
`WeightingFilter`

property during estimation. For example, to model
only data in the frequency range 0-10 rad/s, use the `WeightingFilter`

property, as follows:

`opt = oeOptions('``WeightingFilter`

',[0 10]);
m = oe(Data, [nb nf nk], opt);

For more information about validating your model, see Validating Models After Estimation.

You can use `pem`

or `polyest`

to refine parameter
estimates of an existing polynomial model (of any configuration), as described in Refine Linear Parametric Models.

- Estimate Models Using armax
- Preliminary Step – Estimating Model Orders and Input Delays
- Estimate Polynomial Models in the App