K-step ahead prediction
yp = predict(sys,data,K)
yp = predict(sys,data,K,opt)
[yp,x0e,sys_pred] = predict(sys,data,K,___)
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 diverging outputs. Such divergence occurs because sim emphasizes the low-frequency behavior. One step-ahead prediction is not a powerful test of the model's properties, because 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.
For Output-Error models, there is no difference between the k step-ahead predictions and the simulated output. This lack of difference occurs because, by definition, Output-Error models only use past inputs to predict future outputs.
predict predicts the response over the time span of data. forecast performs prediction into the unseen future, which is a time range beyond the last instant of measured data. predict is a tool for validating the quality of an estimated model. Use predict to determine if the prediction result matches the observed response in data.OutputData. If sys is a good prediction model, consider using it with forecast (only supports linear models).
sys may be a linear or nonlinear identified model.
Measured input-output data.
Specify data as an iddata object.
If sys is a time-series model, which has no input signals, then specify data as an iddata object with no inputs, or a matrix of past (already observed) time-series data.
Specify K as a positive integer that is a multiple of the data sample-time. To obtain a pure simulation of the system, specify K as Inf.
opt is an option set, created using predictOptions, that specifies options including:
yp is an iddata object. The OutputData property stores the values of the predicted output.
Outputs up to the time t-K and inputs up to the time instant t are used to predict the output at the time instant t. The time variable takes values in the range represented by data.SamplingInstants.
When K = Inf, the predicted output is a pure simulation of the system.
For multi-experiment data, yp contains a predicted data set for each experiment. The time span of the predicted outputs matches that of the observed data.
When sys is specified using an idnlhw or idnlgrey model, yp is the same as the simulated response computed using data.InputData as input.
Estimated initial states.
sys_pred is a dynamic system whose simulation, using [data.OutputData data.InputData] as input, yields yp.OutputData as the output.
For discrete-time data, sys_pred is always a discrete-time model.
For multi-experiment data, sys_pred is an array of models, with one entry for each experiment.
When sys is a nonlinear model, sys_pred is .
Simulate a time-series model.
init_sys = idpoly([1 -0.99],,[1 -1 0.2]); e = iddata(,randn(400,1)); data = sim(init_sys,e);
data is an iddata object containing the simulated response data of a time-series model.
Estimate an ARMAX model for the simulated data.
na = 1; nb = 2; sys = armax(data(1:200),[na nb]);
sys is an idpoly model of the identified ARMAX model.
Obtain a 4 step-ahead prediction for the estimated model.
K = 4; yp = predict(sys,data,K);
yp is an iddata object. To obtain the values of the predicted output, type yp.OutputData.
Analyze the prediction.
plot(data(201:400),yp(201:400)); legend('Simulated data','Predicted data');
Alternatively, use compare to substitute the use of predict and plot. For example, use compare(data,sys,K).