动态系统的预测输出
要预测一个动态系统的输出,首先要确定一个模型,该模型适合该系统的过去测量数据,然后预测所确定模型的未来输出。假设你有一个集合Y的N系统输出的测量(Y= {y1,y2,……yN})。预测:预测未来的产出:
使用时间序列估计命令确定系统的模型,例如
基于“增大化现实”技术
,arx
,armax
,党卫军
.该软件通过最小化提前一步预测误差的平方和来估计模型。您可以识别线性模型,如AR、ARMA和状态空间模型。你也可以估计非线性ARX和非线性灰盒模型。
验证已识别的模型
预测
命令。的
预测
命令预测已识别模型在测量数据的时间跨度内的输出(Yp=yp1,yp2,……ypN).使用预测
以确定是否预测的结果Yp匹配观察到的输出Y求所需的预测视界。如果在可用数据的时间跨度内预测良好,则使用模型进行预测。指定预测选项,例如软件如何计算测量数据的初始条件。要指定选项,请使用
forecastOptions
选项设置。计算已识别模型的输出,直到未来的时间范围H, (yN + 1,yN + 2、……yN + H)使用
预测
命令。不像预测
命令,预测
命令在测量数据的最后一刻之后的时间范围内执行对未来的预测。软件通过以下方法计算预测值:
使用识别的模型生成预测模型。
使用测量的(可用的)数据计算预测器的最终状态。
以最终状态为初始条件对识别的模型进行仿真。
有关更多信息,请参见动态系统响应预测导论.
您还可以预测有可测量外生输入的系统的输出u(t)影响输出观测结果。在本例中,您首先使用measured识别输入-输出模型y(t),u(t),然后使用预测
命令。
利用ARMA模型预测时间序列数据
这个例子展示了如何使用ARMA模型预测来自系统的时间序列数据。加载要预测的时间序列数据。
负载iddata9z9past_data = z9.OutputData(1:50);
拟合顺序的ARMA模型3 [4]
测量数据。
Sys = armax(past_data,[4 3]);
执行提前10步的预测,在测量数据的时间跨度内验证模型。
Yp = predict(sys,past_data,10);
绘制预测响应和实测数据图。
t = z9.SamplingInstants;T1 = t(1:50);情节(t1, past_data,“k”, t1, yp‘* b”)传说(“过去的数据”,的预测数据)
这幅图显示sys
是一个很好的预测模型,可以用于预测。
为测量数据指定初始条件为零。
opt = forecastOptions(“InitialCOndition”,“z”);
预测模型输出比估计数据高出100步。
H = 100;yf = forecast(sys,past_data,H,opt);
绘制过去和预测数据。
T2 = t(51:150)';情节(t1, past_data,“k”, t2, yf,“——r”)传说(“过去的数据”,的预测数据)