在介绍上述算法之前,首先介绍MA模型到底是什么,这个算法到底有什么用???
MA模型:
(1)
这是系统建模的另一种方式,传统的对系统建模无非是传递函数和状态空间模型,而
MA模型是时间序列法进行分析的较好的一种建模方式。
然后是Gevers-Wouter算法有什么用??
在我们建立模型的时候经常会遇到一个问题,我们知道系统满足这个模型,但是怎么把模型
里面的参数给估计出来,而我们能知道的只有整个模型的输出y(t),通过y(t)来对模型的参数
进行估计就是该算法的作用,这就解决了我们在建模中的痛楚。
因为算法的推导过程比较繁琐,我这里就先把算法推导结果摆上,有兴趣的同学可以参考邓自
立的《信息融合滤波理论及其应用》,该算法的递推式如下:
(2)
(3)
(4)
其中,代表输出y(t)与误差
之间的协方差,
代表输出y(t)和y(t-k)的协方差,
代表白噪声
的方差,其定义式如下:
(5)
(6)
(7)
下面讨论一下算法的具体过程,不妨哪一个例子进行举例:
假设系统的实际模型如下:
假设取白噪声的方差为1,通过上述模型我们可以算出y(t)的值,我们现在要做的就是利用得到的y(t)
对模型中的参数进行估计。首先我们由协方差公式得到的对应值,协方差公式如下:
(8)
如果你利用模型中标准的参数进行计算,能得到如下值:
(9)
上述值是通过定义进行求取的,求取过程如下:
(10)
同理可以求取、
、
的值。
而我们利用y(t)对其值进行求取,当n=1000时,误差在0.1左右,当n取10000时,误差在0.01,
充分证明了该方法的可行性。
我们得到、
、
、
的值之后,就可以利用式(2)来对
进行迭代
求取,求取过程如下:
(11)
当t=10时,求取过程如下:
(12)
这里只求了四个元素的原因是,在参数估计的式(3)、式(4)分别只需要这四个元素就可以了,
其他元素的求取是多余的。按照上述式子迭代100次后就可以估计出参数Di和Q,迭代过程如下:
仿真代码如下,有兴趣的可以验证一下:

| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |