Validate Online Parameter Estimation at the Command Line
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™.
Examine the Estimation Error
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;
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
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.
Examine Parameter Covariance
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
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
e is the vector of
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.
Use Validation Commands from System Identification Toolbox
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
sys = idpoly(obj); sys.Ts = Ts; z = iddata(Output,Input,Ts)
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
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
idpolymodel objects, and use
compareto choose the best one.
If you want to copy an existing System object and then modify properties of the copied object, use the
clonecommand. 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 (