Estimate Polynomial Models at the Command Line
Using arx and iv4 to Estimate ARX Models
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).
Note
Continuous-time polynomials of ARX structure are not supported.
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, as described in Refine Linear Parametric Models.
For detailed information about these commands, see the corresponding reference page.
Tip
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.
Using polyest to Estimate Polynomial Models
You 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?.
Tip
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.
Tip
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.
