Estimate State-Space Equivalent of ARMAX and OE Models
This example shows how to estimate ARMAX and OE-form models using the state-space estimation approach.
You can estimate the equivalent of multiple-output ARMAX and Output-Error (OE) models using state-space model structures:
Convert the resulting models into idpoly
models to see them in the commonly defined ARMAX or OE forms.
Load measured data.
load iddata1 z1
Estimate state-space models.
mss_noK = n4sid(z1,2,'DisturbanceModel','none'); mss = n4sid(z1,2);
mss_noK
is a second order state-space model with no disturbance model used during estimation. mss
is also a second order state-space model, but with an estimated noise component. Both models use the measured data set z1
for estimation.
Convert the state-space models to polynomial models.
mOE = idpoly(mss_noK); mARMAX = idpoly(mss);
Converting to polynomial models results in the parameter covariance information for mOE
and mARMAX
to be lost.
You can use one of the following to recompute the covariance:
Zero-iteration update using the same estimation data.
translatecov
as a Gauss approximation formula-based translation of covariance ofmss_noK
andmss
into covariance ofmOE
andmARMAX
.
Reestimate mOE
and mARMAX
for the parameters of the polynomial model using a zero iteration update.
opt = polyestOptions; opt.SearchOptions.MaxIterations = 0; mOE = polyest(z1,mOE,opt); mARMAX = polyest(z1,mARMAX,opt);
The options object, opt
, specifies a zero iteration update for mOE
and mARMAX
. Consequently, the model parameters remain unchanged and only their covariance information is updated.
Alternatively, you can use translatecov
to convert the estimated models into polynomial form.
fcn = @(x)idpoly(x); mOEt = translatecov(fcn,mss_noK); mARMAXt = translatecov(fcn,mss);
Because polyest
and translatecov
use different computation algorithms, the covariance data obtained by running a zero-iteration update may not match that obtained using translatecov
.
You can view the uncertainties of the model parameters using present(mOE)
and present(mARMAX)
.
You can use a state-space model with (Output-Error (OE) form) for initializing a Hammerstein-Wiener estimation at the command line. This initialization may improve the fit of the model. See Initialize Hammerstein-Wiener Estimation Using Linear Model.
For more information about ARMAX and OE models, see Input-Output Polynomial Models.