主要内容

动态系统的预测输出

要预测一个动态系统的输出,首先要确定一个模型,该模型适合该系统的过去测量数据,然后预测所确定模型的未来输出。假设你有一个集合YN系统输出的测量(Y= {y1y2,……yN})。预测:预测未来的产出:

  1. 使用时间序列估计命令确定系统的模型,例如基于“增大化现实”技术arxarmax,党卫军

    该软件通过最小化提前一步预测误差的平方和来估计模型。您可以识别线性模型,如AR、ARMA和状态空间模型。你也可以估计非线性ARX和非线性灰盒模型。

  2. 验证已识别的模型预测命令。

    预测命令预测已识别模型在测量数据的时间跨度内的输出(Ypyp1yp2,……ypN).使用预测以确定是否预测的结果Yp匹配观察到的输出Y求所需的预测视界。如果在可用数据的时间跨度内预测良好,则使用模型进行预测。

  3. 指定预测选项,例如软件如何计算测量数据的初始条件。要指定选项,请使用forecastOptions选项设置。

  4. 计算已识别模型的输出,直到未来的时间范围H, (yN + 1yN + 2、……yN + H)使用预测命令。不像预测命令,预测命令在测量数据的最后一刻之后的时间范围内执行对未来的预测。

    软件通过以下方法计算预测值:

    • 使用识别的模型生成预测模型。

    • 使用测量的(可用的)数据计算预测器的最终状态。

    • 以最终状态为初始条件对识别的模型进行仿真。

    有关更多信息,请参见动态系统响应预测导论

您还可以预测有可测量外生输入的系统的输出ut)影响输出观测结果。在本例中,您首先使用measured识别输入-输出模型yt),ut),然后使用预测命令。

利用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”)传说(“过去的数据”的预测数据

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些对象表示过去数据、预测数据。

这幅图显示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”)传说(“过去的数据”的预测数据

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些对象表示过去数据、预测数据。

相关的话题