| Products & Services | Solutions | Academia | Support | User Community | Company |
| Download Product Updates | | | Get Pricing | | | Trial Software |
| Documentation → System Identification Toolbox |
| Contents | Index |
| Learn more about System Identification Toolbox |
m = arx(data,orders)
m = arx(data,orders,'P1',V1,...,'PN',VN)
m = arx(data,'na',na,'nb',nb,'nc',nc,'nk',nk)
An iddata object, an frd object, or an idfrd frequency-response-data object.
Vector of integers, specified using the format
orders = [na nb nk]
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.
When data is a time series, which has no input and one output, then
orders = [na]
'na', 'nb', and 'nc' are orders of the ARMAX model. nk is the delay. na, nb, nc, and nk are the corresponding integer values.
Pairs of property names and property values can include any of the following idmodel properties:
'Focus', 'InitialState', 'Display', 'MaxIter', 'Tolerance', 'LimitError', and 'FixedParameter'.
See Algorithm Properties, idpoly, and idmodel for more information.
Note
arx does not support multiple-output continuous-time
models. Use state-space model structure instead. When the true noise
term
|
m = arx(data,orders) returns a model m as an idpoly or idarx object with estimated parameters and covariances (parameter uncertainties). For single-output data, the model is an idpoly object. For multiple-output data, the model is an idarx object. Uses the least-squares method and specified orders.
m = arx(data,orders,'P1',V1,...,'PN',VN) returns a model m. Use additional property-value pairs to specify the estimation algorithm properties.
m = arx(data,'na',na,'nb',nb,'nc',nc,'nk',nk) returns a model m with orders and delays specified as parameter-value pairs.
arx estimates the parameters of the ARX model structure:
![]()
The parameters na and nb are the orders of the ARX model, and nk is the delay.
— Output
at time
.
— Number
of poles.
— Number
of zeroes plus 1.
— Number
of input samples that occur before the input affects the output, also
called the dead time in the system. For discrete
systems with no dead time, there is a minimum 1–sample delay
because the output depends on the previous input and
.
— Previous
outputs on which the current output depends.
— Previous
and delayed inputs on which the current output depends.
— White-noise
disturbance value.
A more compact way to write the difference equation is
![]()
q is the delay operator. Specifically,
![]()
![]()
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
![]()
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.
![]()
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
m = arx(data,orders,'NoiseVariance', Lambda)
You can use arx to refine an existing model m_initial as an argument.
m = arx(data,m_initial)
The new model m uses the orders and the weighting matrix for the prediction errors from m_initial. You can further modify m_initial by adding a list of property name and value pairs as arguments. This is especially useful when some parameters must be fixed using 'FixedParameter' property.
For models with one output, continuous-time models can be estimated from continuous-time frequency-domain data. In this case, na is the number of estimated denominator coefficients and nb is number of estimated numerator coefficients.
Note For continuous-time models, omit the delay parameter nk because it has no meaning in this case. Because estimating continuous-time ARX models often produces bias, you might get better results by using the oe method. |
For example, when na = 4, nb = 2, the model structure is:
![]()
Tip When using continuous-time data, limit the fit to a smaller frequency range using the 'Focus' idmodel property: m = arx(datac,[na nb],'focus',[0 wh]) |
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.
You can set the property 'InitialState' to one of 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.
See Algorithm Properties for more information on model properties.
QR factorization solves the overdetermined set of linear equations that constitutes the least-squares estimation problem.
The regression matrix is formed so that only measured quantities are used (no fill-out with zeros). When the regression matrix is larger than MaxSize, data is segmented and QR factorization is performed iteratively on these data segments.
This example generates input data based on a specified ARX model, and then uses 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]);
| Algorithm Properties | |
| EstimationInfo | |
| ar | |
| idarx | |
| idpoly | |
| iv4 | |
| ivar | |
| ivx | |
| pem |
![]() | armax | arxdata | ![]() |

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |