Estimate parameters of ARX or AR model using least squares


sys = arx(data,[na nb nk])
sys = arx(data,[na nb nk],Name,Value)
sys = arx(data,[na nb nk],___,opt)



arx does not support continuous-time estimations. Use tfest instead.

sys = arx(data,[na nb nk]) returns an ARX structure polynomial model, sys, with estimated parameters and covariances (parameter uncertainties) using the least-squares method and specified orders.

sys = arx(data,[na nb nk],Name,Value) estimates a polynomial model with additional options specified by one or more Name,Value pair arguments.

sys = arx(data,[na nb nk],___,opt) specifies estimation options that configure the estimation objective, initial conditions and handle input/output data offsets.

Input Arguments


Estimation data.

Specify data as an iddata object, an frd object, or an idfrd frequency-response-data object.

[na nb nk]

Polynomial orders.

[na nb nk] define the polynomial orders of an ARX model.

  • na — Order of the polynomial A(q).

    Specify na as an Ny-by-Ny matrix of nonnegative integers. Ny is the number of outputs.

  • nb — Order of the polynomial B(q) + 1.

    nb is an Ny-by-Nu matrix of nonnegative integers. Ny is the number of outputs and Nu is the number of inputs.

  • nk — Input-output delay expressed as fixed leading zeros of the B polynomial.

    Specify nk as an Ny-by-Nu matrix of nonnegative integers. Ny is the number of outputs and Nu is the number of inputs.


Estimation options.

opt is an options set that specifies estimation options, including:

  • input/output data offsets

  • output weight

Use arxOptions to create the options set.

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 quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.


Input delays. InputDelay is a numeric vector specifying a time delay for each input channel. 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, where each entry is a numerical value representing 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.

Default: 0 for all input channels


Transport delays. IODelay is a numeric array specifying a separate transport delay for each input/output pair.

Specify transport delays as integers denoting delay of a multiple of the sample time, Ts.

For a MIMO system with Ny outputs and Nu inputs, set IODelay to a Ny-by-Nu array, where each entry is a numerical value representing the transport delay for the corresponding input/output pair. You can also set IODelay to a scalar value to apply the same delay to all input/output pairs. Useful as a replacement for the nk order, you can factor out max(nk-1,0) lags as the IODelay value.

Default: 0 for all input/output pairs


Specify integrators in the noise channels.

Adding an integrator creates an ARIX model represented by:


where,11q1 is the integrator in the noise channel, e(t).

IntegrateNoise is a logical vector of length Ny, where Ny is the number of outputs.

Default: false(Ny,1), where Ny is the number of outputs

Output Arguments


ARX model that fits the estimation data, returned as a discrete-time idpoly object. This model is created using the specified model orders, delays, and estimation options.

Information about the estimation results and options used is stored in the Report property of the model. Report has the following fields:

Report FieldDescription

Summary of the model status, which indicates whether the model was created by construction or obtained by estimation.


Estimation command used.


Handling of initial conditions during model estimation, returned as one of the following values:

  • 'zero' — The initial conditions were set to zero.

  • 'estimate' — The initial conditions were treated as independent estimation parameters.

This field is especially useful to view how the initial conditions were handled when the InitialCondition option in the estimation option set is 'auto'.


Quantitative assessment of the estimation, returned as a structure. See Loss Function and Model Quality Metrics for more information on these quality metrics. The structure has the following fields:


Normalized root mean squared error (NRMSE) measure of how well the response of the model fits the estimation data, expressed as a percentage.


Value of the loss function when the estimation completes.


Mean squared error (MSE) measure of how well the response of the model fits the estimation data.


Final prediction error for the model.


Raw Akaike Information Criteria (AIC) measure of model quality.


Small sample-size corrected AIC.


Normalized AIC.


Bayesian Information Criteria (BIC).


Estimated values of model parameters.


Option set used for estimation. If no custom options were configured, this is a set of default options. See arxOptions for more information.


State of the random number stream at the start of estimation. Empty, [], if randomization was not used during estimation. For more information, see rng in the MATLAB® documentation.


Attributes of the data used for estimation, returned as a structure with the following fields:


Name of the data set.


Data type.


Number of data samples.


Sample time.


Input intersample behavior, returned as one of the following values:

  • 'zoh' — Zero-order hold maintains a piecewise-constant input signal between samples.

  • 'foh' — First-order hold maintains a piecewise-linear input signal between samples.

  • 'bl' — Band-limited behavior specifies that the continuous-time input signal has zero power above the Nyquist frequency.


Offset removed from time-domain input data during estimation. For nonlinear models, it is [].


Offset removed from time-domain output data during estimation. For nonlinear models, it is [].

For more information on using Report, see Estimation Report.


collapse all

Generate input data based on a specified ARX model, and then use this data to estimate an ARX model.

A = [1  -1.5  0.7];
B = [0 1 0.5];
m0 = idpoly(A,B);
u = iddata([],idinput(300,'rbs'));
e = iddata([],randn(300,1));
y = sim(m0,[u e]);
z = [y,u];
m = arx(z,[2 2 1]);

Use arxRegul to automatically determine regularization constants and use the values for estimating an FIR model of order 50.

Obtain L and R values.

load regularizationExampleData eData;
orders = [0 50 0];
[L,R] = arxRegul(eData,orders);

By default, the TC kernel is used.

Use the returned Lambda and R values for regularized ARX model estimation.

opt = arxOptions;
opt.Regularization.Lambda = L;
opt.Regularization.R = R;
model = arx(eData,orders,opt);

More About

collapse all

ARX structure

The ARX model structure is :


The parameters na and nb are the orders of the ARX model, and nk is the delay.

  • y(t)— Output at time t.

  • na — Number of poles.

  • nb — Number of zeroes plus 1.

  • nk — Number of input samples that occur before the input affects the output, also called the dead time in the system.

  • y(t1)y(tna) — Previous outputs on which the current output depends.

  • u(tnk)u(tnknb+1) — Previous and delayed inputs on which the current output depends.

  • e(t) — White-noise disturbance value.

A more compact way to write the difference equation is


q is the delay operator. Specifically,



Time Series Models

For time-series data that contains no inputs, one output and orders = na, the model has AR structure of order na.

The AR model structure is


Multiple Inputs and Single-Output Models

For multiple-input systems, nb and nk are row vectors where the ith element corresponds to the order and delay associated with the ith input.

y(t)+A1y(t1)+A2y(t2)++Anay(tna)=          B0u(t)+B1u(t1)++Bnbu(tnb)+e(t)

Multi-Output Models

For models with multiple inputs and multiple outputs, na, nb, and nk contain one row for each output signal.

In the multiple-output case, arx minimizes the trace of the prediction error covariance matrix, or the norm


To transform this to an arbitrary quadratic norm using a weighting matrix Lambda


use the syntax

opt = arxOptions('OutputWeight',inv(lambda))
m = arx(data,orders,opt)

Estimating Initial Conditions

For time-domain data, the signals are shifted such that unmeasured signals are never required in the predictors. Therefore, there is no need to estimate initial conditions.

For frequency-domain data, it might be necessary to adjust the data by initial conditions that support circular convolution.

Set the InitialCondition estimation option (see arxOptions) to one the following values:

  • 'zero' — No adjustment.

  • 'estimate' — Perform adjustment to the data by initial conditions that support circular convolution.

  • 'auto' — Automatically choose between 'zero' and 'estimate' based on the data.


QR factorization solves the overdetermined set of linear equations that constitute the least-squares estimation problem.

Without regularization, the ARX model parameters vector θ is estimated by solving the normal equation:


where J is the regressor matrix and y is the measured output. Therefore,


Using regularization adds a regularization term:


where, λ and R are the regularization constants. See arxOptions for more information on the regularization constants.

When the regression matrix is larger than the MaxSize specified in arxOptions, data is segmented and QR factorization is performed iteratively on these data segments.

Introduced before R2006a