Estimate parameters of ARX or AR model using least squares
sys = arx(data,[na
sys = arx(data,[na nb nk],Name,Value)
sys = arx(data,[na nb nk],___,opt)
Note: arx does not support continuous-time estimations. Use tfest instead.
Specify data as an iddata object, an frd object, or an idfrd frequency-response-data object.
[na nb nk]
[na nb nk] define the polynomial orders of an ARX model.
opt is an options set that specifies estimation options, including:
Use arxOptions to create the options set.
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.
Input delays. InputDelay is a numeric vector specifying a time delay for each input channel. Specify input delays in integer multiples of the sampling period 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 sampling period 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, 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
Identified ARX structure polynomial model.
sys is a discrete-time idpoly model, which encapsulates the estimated A and B polynomials and the parameter covariance information.
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);
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.
— 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
opt = arxOptions('OutputWeight', inv(lambda)) m = arx(data, orders, opt)
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 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.
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.