This topic shows how to validate online parameter estimation at the command line. If the validation indicates low confidence in the estimation, then see Troubleshoot Online Parameter Estimation. After you have validated the online estimation results, you can generate C/C++ code or a standalone application using MATLAB® Coder™ or MATLAB Compiler™.
The estimation error is the difference between measured output,
y
, and the estimated output,
EstimatedOutput
at each time step.
obj = recursiveARX; [A,B,EstimatedOutput] = step(obj,y,u); estimationError = y-EstimatedOutput;
Here, u
is the input data at that time step.
The estimation errors (residuals) can be large at the beginning of the estimation or when there are large parameter variations. The error should get smaller as the parameter estimates converge. Small errors relative to the size of the outputs increase confidence in the estimated values.
Simulate the estimated model and compare the simulated and measured outputs. To do so, feed the measured input into a model that uses the estimated time-varying parameter values. Then compare the model output with the measured output. A close match between the simulated output and the measured output gives confidence in the estimated values.
Parameter covariance is a measure of estimated uncertainty in the parameters. The covariance is calculated when the forgetting factor or Kalman filter estimation algorithms are used.
Parameter covariance is computed assuming that the residuals are white noise, and
the variance of these residuals is 1. You view the parameter covariance matrix using
the ParameterCovariance
property of your System
object™.
P = obj.ParameterCovariance;
The estimated parameters can be considered as random variables with variance equal
to the corresponding diagonal of the parameter covariance matrix, scaled by the
variance of the residuals (residualVariance
) at each time step.
You use prior knowledge, or calculate residualVariance
from the
residuals, e
. Where, e
is the vector of
estimation errors, estimationError
.
residualVariance = var(e);
Scale the parameter covariance to calculate the variance of the estimated parameters.
paramVariance = diag(P)*residualVariance;
A smaller variance value gives confidence in the estimated values.
You can validate a snapshot of the estimated model using validation commands for offline estimation. This validation only captures the behavior of a time-invariant model. For available offline validation techniques in System Identification Toolbox™, see Model Validation.
To use offline commands, convert your online estimation System
object, obj
, into an idpoly
model object. Also convert
your stream of input-output validation data, Output(t) and
Input(t), into an iddata
object.
sys = idpoly(obj); sys.Ts = Ts; z = iddata(Output,Input,Ts)
Here, Ts
is the sample time.
This conversion and any subsequent analysis are not supported by MATLAB Coder.
The validation techniques include:
Analysis of the residuals using techniques such as the whiteness test and
the independence test using offline commands such as resid
. For example, use
resid(z,sys)
. For information about these tests, see
What Is Residual Analysis?.
Comparison of model output and measured output. For example, use
compare(z,sys)
.
Comparison of different online estimation System objects.
You can create multiple versions of a System
object with different object properties, convert each of them to
idpoly
model objects, and
use compare
to choose the best
one.
If you want to copy an existing System
object and then modify properties of the copied object, use the
clone
command. Do not create
additional objects using syntax obj2 = obj
. Any changes
made to the properties of the new System
object created this way (obj2
) also change the
properties of the original System
object (obj
).
recursiveAR
| recursiveARMA
| recursiveARMAX
| recursiveARX
| recursiveBJ
| recursiveLS
| recursiveOE