Products & Services Solutions Academia Support User Community Company

Learn more about System Identification Toolbox   

predict - Predict output k steps ahead

Syntax

yp = predict(m,data)
[yp,x0p,mpred] = predict(m,data,k,'InitialState',init)

Description

data is the output-input data as an iddata object, and m is any idmodel or idnlmodel object. predict is meaningful only for time-domain data.

The argument k indicates that the k step-ahead prediction of y according to the model m is computed. In the calculation of yp(t), the model can use outputs up to time

and inputs up to the current time t. The default value of k is 1.

The output yp is an iddata object containing the predicted values as OutputData.

x0p is the used (estimated) initial state vector. For multiexperiment data, x0p is a matrix, whose columns contain the initial states for each experiment.

The output argument mpred contains the k step-ahead predictor. This is given as a cell array, whose kth entry is an idpoly model for the predictor of output number k. Note that these predictor models have as input both input and output signals in the data set. The channel names indicate how the predictor model and the data fit together.

init determines how to deal with the initial state:

If init is not specified for linear models, its value is determined, as follows:

If init is not specified for idnlgrey models, init = 'Model' is the default. The values and their estimation behavior are inherited from m.InitialStates.

If init is not specified for idnlarx models, init = 'Estimate' is the default. This corresponds to the first few samples of predicted outputs exactly matching the first few output samples in the data set.

If init is not specified for idnlhw models, init = 'Estimate' is the default. This computes initial states by minimizing the prediction errors over the available data range.

An important use of predict is to evaluate a model's properties in the mid-frequency range. Simulation with sim (which conceptually corresponds to k = inf) can lead to levels that drift apart, since the low-frequency behavior is emphasized. One step-ahead prediction is not a powerful test of the model's properties, since the high-frequency behavior is stressed. The trivial predictor can give good predictions in case the sampling of the data is fast.

Another important use of predict is to evaluate time-series models. The natural way of studying a time-series model's ability to reproduce observations is to compare its k step-ahead predictions with actual data.

Note that for output-error models, there is no difference between the k step-ahead predictions and the simulated output, since, by definition, output-error models only use past inputs to predict future outputs.

Algorithm

The model is evaluated in state-space form, and the state equations are simulated k steps ahead with initial value , where is the Kalman filter state estimate.

Examples

Simulate a time series, estimate a model based on the first half of the data, and evaluate the four step-ahead predictions on the second half.

m0 = idpoly([1 -0.99],[],[1 -1 0.2]);
e = iddata([],randn(400,1));
y = sim(m0,e);
m = armax(y(1:200),[1 2]);
yp = predict(m,y,4);
plot(y(201:400),yp(201:400))

Note that the last two commands are also achieved by

compare(y,m,4,201:400);

See Also

compare 
pe 
sim 
simsd 

  


Recommended Products

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS