随机信号参数建模法

在进行语音信号编码传输时,往往对语音信号信源进行建模,然后对模型参数进行编码,只传送编码后的模型参数。

这样在解码端获得模型参数重建信源模型后,即可获得重建后的语音信号。

信号的现代建模法是建立在具有最大的不确定性基础上的预测。其广义定义为:随机信号x(n)由白噪w(n)激励某一确定系统的响应。确定了白噪就,研究随机信号就等价于研究产生随机信号的系统。
在这里插入图片描述
对平稳随机信号,三种常用的线性模型为:

  • AR模型(自回归模型,Auto-regression model)
  • MA模型 (滑动平均模型 Moving average model)
  • ARMA模型 (自回归滑动平均模型 Auto-regression-Moving average model)

着重介绍AR模型的基本原理和方法

三种参数模型

MA模型

随机信号x(n)由当前激励w(n)和若干次过去的激励w(n-k)线性组合产生:
x ( n ) = ∑ k = 0 q b k w ( n − k ) x(n)=\sum_{k=0}^{q}{b_kw(n-k)} x(n)=k=0qbkw(nk)
系统函数为
H ( z ) = X ( z ) W ( z ) = ∑ k = 0 q z − k H(z)=\frac{X(z)}{W(z)}=\sum_{k=0}^{q}{z^{-k}} H(z)=W(z)X(z)=k=0qzk
其中q表示阶数。系统函数只有零点没有极点,为全零点模型,一定是稳定的。全零点用MA(q)表示。

AR模型

随机信号由本身的若干次过去值x(n-k)和当前激励w(n)线性组合产生:
x ( n ) = w ( n ) − ∑ k = 1 P a k x ( n − k ) x(n)=w(n)-\sum_{k=1}^{P}{a_kx(n-k)} x(n)=w(n)k=1Pakx(nk)
系统函数为:
H ( z ) = 1 1 + ∑ k = 1 P a k z − k H(z)=\frac{1}{1+\sum_{k=1}^{P}{a_kz^{-k}}} H(z)=1+k=1Pakzk1
其中p为阶数。这是个全极点模型,只有极点没有零点。系统的稳定性取决于极点的分布位置,用AR§表示。

ARMA表示

是AR模型和MA模型的结合,由数个x(n-k)和w(n-k)线性组合形成:
x ( n ) = ∑ k = 0 q b k w ( n − k ) − ∑ k = 1 p a k x ( n − k ) x(n)=\sum_{k=0}^{q}{b_kw(n-k)}-\sum_{k=1}^{p}{a_kx(n-k)} x(n)=k=0qbkw(nk)k=1pakx(nk)
系统函数为
H ( z ) = ∑ k = 0 q b k z − k 1 + ∑ k = 1 p a k z − k H(z)=\frac{\sum_{k=0}^{q}{b_kz^{-k}}}{1+\sum_{k=1}^{p}{a_kz^{-k}}} H(z)=1+k=1pakzkk=0qbkzk
既有零点又有极点。稳定性由零极点分布确定,表示为ARMA(p,q).

AR模型参数估计

使用AR模型的场合较多,这是因为计算工作比较容易。实际上三种模型都可以相互转化,选择哪一种模型主要取决于计算量和节约。选定模型后下一步就是确定模型参数了。

AR模型和自相关函数

对之前的ZR模型x(n)表达式等式两边同乘x(n-m),然后求均值
E [ x ( n ) x ( n − m ) ] = E [ w ( n ) x ( n − m ) − ∑ k = 1 P a k x ( n − k ) x ( n − m ) ] E[x(n)x(n-m)]=E[w(n)x(n-m)-\sum_{k=1}^{P}{a_kx(n-k)x(n-m)}] E[x(n)x(nm)]=E[w(n)x(nm)k=1Pakx(nk)x(nm)]
有自相关函数:
R x x ( m ) = E [ x ( n ) x ( n + m ) ] = E [ x ( k − m ) x ( k ) ] = E [ x ( n ) x ( n − m ) ] = R x x ( − m ) R_{xx}(m)=E[x(n)x(n+m)]=E[x(k-m)x(k)]=E[x(n)x(n-m)]=R_{xx}(-m) Rxx(m)=E[x(n)x(n+m)]=E[x(km)x(k)]=E[x(n)x(nm)]=Rxx(m)
呈偶对成,所以原式可化为:
R x x ( m ) = R x w ( m ) − ∑ k = 1 p a k R x x ( m − k ) R_{xx}(m)=R_{xw}(m)-\sum_{k=1}^{p}{a_kR_{xx}(m-k)} Rxx(m)=Rxw(m)k=1pakRxx(mk)
系统的单位脉冲响应h(n)是因果的,有下列推导:
R x w ( m ) = E [ x ( n ) w ( n + m ) ] x ( N ) = w ( n ) ∗ h ( n ) = ∑ k = 0 ∞ h ( k ) w ( n − k ) R x w ( m ) = E [ ∑ k = 0 ∞ h ( k ) w ( n − k ) w ( n + m ) ] = h ( k ) E [ ∑ k = 0 ∞ w ( n − k ) w ( n + m ) ] = ∑ k = 0 ∞ h ( k ) R w w ( m + k ) = ∑ k = 0 ∞ h ( k ) σ w 2 δ ( m + k ) = σ w 2 h ( − m ) R_{xw}(m)=E[x(n)w(n+m)]\\ x(N)=w(n)*h(n)=\sum_{k=0}^{\infty}{h(k)w(n-k)}\\ R_{xw}(m)=E[\sum_{k=0}^{\infty}{h(k)w(n-k)}w(n+m)]=h(k)E[\sum_{k=0}^{\infty}{w(n-k)}w(n+m)]\\ =\sum_{k=0}^{\infty}{h(k)R_{ww}(m+k)}=\sum_{k=0}^{\infty}{h(k)\sigma_w^2\delta(m+k)}=\sigma_w^2h(-m) Rxw(m)=E[x(n)w(n+m)]x(N)=w(n)h(n)=k=0h(k)w(nk)Rxw(m)=E[k=0h(k)w(nk)w(n+m)]=h(k)E[k=0w(nk)w(n+m)]=k=0h(k)Rww(m+k)=k=0h(k)σw2δ(m+k)=σw2h(m)
最后可得
R x w ( m ) = { 0 m > 0 σ w 2 h ( − m ) m ≤ 0 R_{xw}(m)=\begin{cases} 0&m>0\\ \sigma_w^2h(-m)&m\le0 \end{cases} Rxw(m)={0σw2h(m)m>0m0

带入自相关函数可得
R x x ( m ) = { − ∑ k = 1 p a k R x x ( m − k ) m > 0 − ∑ k = 1 p a k R x x ( m − k ) + h ( 0 ) σ w 2 m = 0 R x x ( − m ) m < 0 R_{xx}(m)=\begin{cases} -\sum_{k=1}^{p}{a_kR_{xx}(m-k)}&m>0\\ -\sum_{k=1}^{p}{a_kR_{xx}(m-k)}+h(0)\sigma_w^2&m=0\\ R_{xx}(-m)&m<0 \end{cases} Rxx(m)=k=1pakRxx(mk)k=1pakRxx(mk)+h(0)σw2Rxx(m)m>0m=0m<0
其中由系统函数可得h(0)=1。

可得AR模型输出信号自相关函数由递推性质:
R x x ( m ) = − ∑ k = 1 p a k R x x ( m − k ) m > 0 R_{xx}(m)=-\sum_{k=1}^{p}{a_kR_{xx}(m-k)}\quad m>0 Rxx(m)=k=1pakRxx(mk)m>0
这也就是Yule-Walker(Y-W)方程,变化后渴求输入白噪方差:
0 = R x x ( m ) + ∑ k = 1 p a k R x x ( m − k ) m > 0 s i g m a w 2 = R x x ( 0 ) + ∑ k = 1 p a k R x x ( − k ) m = 0 0=R_{xx}(m)+\sum_{k=1}^{p}{a_kR_{xx}(m-k)}\quad m>0\\ sigma_w^2=R_{xx}(0)+\sum_{k=1}^{p}{a_kR_{xx}(-k)}\quad m=0 0=Rxx(m)+k=1pakRxx(mk)m>0sigmaw2=Rxx(0)+k=1pakRxx(k)m=0
写成矩阵形式,可得单一的正规矩阵方程:
[ R ( 0 ) R ( − 1 ) . . . R ( − p ) R ( 1 ) R ( 0 ) . . . R ( − p + 1 ) . . . . . . . . . . . . R ( p ) R ( p − 1 ) . . . R ( 0 ) ] [ 1 a 1 . . . a p ] = [ σ w 2 0 . . . 0 ] \left[ \begin{array}{ccc} R(0) & R(-1) & ... & R(-p)\\ R(1) & R(0) & ... & R(-p+1)\\ ... & ... & ... & ...\\ R(p) & R(p-1) & ...& R(0)\\ \end{array} \right] \left[ \begin{array}{ccc} 1 \\ a_1 \\ ... \\ a_p\\ \end{array} \right] = \left[ \begin{array}{ccc} \sigma_w^2 \\ 0 \\ ... \\ 0\\ \end{array} \right] R(0)R(1)...R(p)R(1)R(0)...R(p1)............R(p)R(p+1)...R(0)1a1...ap=σw20...0
第一个矩阵的元素都是自相关函数。由于自相关函数是偶函数,对角线上的元素相同,存在高效算法。

只要已知输出平稳随机信号的自相关函数,就可的AR模型参数,且不需要很多观测数据。

实例

在这里插入图片描述
x(n)表达式中的系数即为a1,a2,a3.代入矩阵表达式可得:

[ R ( 0 ) R ( 1 ) R ( 2 ) R ( 3 ) R ( 1 ) R ( 0 ) R ( 1 ) R ( 2 ) R ( 2 ) R ( 1 ) R ( 0 ) R ( 1 ) R ( 3 ) R ( 2 ) R ( 1 ) R ( 0 ) ] [ 1 − 14 24 − 9 24 1 24 ] = [ σ w 2 0 . . . 0 ] \left[ \begin{array}{ccc} R(0) & R(1) & R(2) & R(3)\\ R(1) & R(0) & R(1) & R(2)\\ R(2) & R(1) & R(0) & R(1)\\ R(3) & R(2) & R(1) & R(0)\\ \end{array} \right] \left[ \begin{array}{ccc} 1\\ -\frac{14}{24} \\ -\frac{9}{24} \\ \frac{1}{24}\\ \end{array} \right] = \left[ \begin{array}{ccc} \sigma_w^2 \\ 0 \\ ... \\ 0\\ \end{array} \right] R(0)R(1)R(2)R(3)R(1)R(0)R(1)R(2)R(2)R(1)R(0)R(1)R(3)R(2)R(1)R(0)12414249241=σw20...0

转化可得:
[ a ( 1 ) a ( 2 ) a ( 3 ) a ( 4 ) a ( 2 ) a ( 1 ) + a ( 3 ) a ( 4 ) 0 a ( 3 ) a ( 2 ) + a ( 4 ) a ( 1 ) 0 a ( 4 ) a ( 3 ) a ( 2 ) a ( 1 ) ] [ R ( 0 ) R ( 1 ) R ( 2 ) R ( 3 ) ] = [ 1 0 . . . 0 ] \left[ \begin{array}{ccc} a(1) & a(2) & a(3) & a(4)\\ a(2) & a(1)+a(3) & a(4) & 0\\ a(3) & a(2)+a(4) & a(1) & 0\\ a(4) & a(3) & a(2) & a(1)\\ \end{array} \right] \left[ \begin{array}{ccc} R(0) \\ R(1) \\ R(2) \\ R(3) \\ \end{array} \right] = \left[ \begin{array}{ccc} 1 \\ 0 \\ ... \\ 0\\ \end{array} \right] a(1)a(2)a(3)a(4)a(2)a(1)+a(3)a(2)+a(4)a(3)a(3)a(4)a(1)a(2)a(4)00a(1)R(0)R(1)R(2)R(3)=10...0
利用matlab解线性方程组:

a = [1, -14/24, -9/24, 1/24];
A = [a(1) a(2) a(3) a(4);
    a(2) a(1)+a(3) a(4) 0;
    a(3) a(2)+a(4) a(1) 0;
    a(4) a(3) a(2) a(1)];
B = [1; 0; 0; 0];
Rxx = A \ B

可得R(0)-R(3):

Rxx =

    4.9377
    4.3287
    4.1964
    3.8654

通过推导公式可得R(4)R(5):
R ( 4 ) = − ∑ k = 1 3 a k R x x ( 4 − k ) = 3.6418 R ( 4 ) = − ∑ k = 1 3 a k R x x ( 5 − k ) = 3.4027 R(4)=-\sum_{k=1}^{3}{a_kR_{xx}(4-k)}=3.6418\\ R(4)=-\sum_{k=1}^{3}{a_kR_{xx}(5-k)}=3.4027 R(4)=k=13akRxx(4k)=3.6418R(4)=k=13akRxx(5k)=3.4027
将R(0)-R(3)带入矩阵表达式
[ R ( 0 ) R ( 1 ) R ( 2 ) R ( 3 ) R ( 1 ) R ( 0 ) R ( 1 ) R ( 2 ) R ( 2 ) R ( 1 ) R ( 0 ) R ( 1 ) R ( 3 ) R ( 2 ) R ( 1 ) R ( 0 ) ] [ 1 a ^ 1 a ^ 2 a ^ 3 ] = [ σ ^ w 2 0 . . . 0 ] \left[ \begin{array}{ccc} R(0) & R(1) & R(2) & R(3)\\ R(1) & R(0) & R(1) & R(2)\\ R(2) & R(1) & R(0) & R(1)\\ R(3) & R(2) & R(1) & R(0)\\ \end{array} \right] \left[ \begin{array}{ccc} 1 \\ \hat a_1 \\ \hat a_2 \\ \hat a_3\\ \end{array} \right] = \left[ \begin{array}{ccc} \hat\sigma_w^2 \\ 0 \\ ... \\ 0\\ \end{array} \right] R(0)R(1)R(2)R(3)R(1)R(0)R(1)R(2)R(2)R(1)R(0)R(1)R(3)R(2)R(1)R(0)1a^1a^2a^3=σ^w20...0
通过计算可得
a ^ 1 = − 14 24 a ^ 2 = − 9 24 a ^ 3 = − 1 24 σ ^ w 2 = 1 \hat a_1=-\frac{14}{24}\\ \hat a_2=-\frac{9}{24}\\ \hat a_3=-\frac{1}{24}\\ \hat\sigma_w^2=1 a^1=2414a^2=249a^3=241σ^w2=1
和题目中参数一样,没有失真,这是因为AR模型已知。

已有一定长的观察值,则可以求自相关函数:

xn = [0.4282    1.1454    1.5597    1.8994    1.6854    2.3075    2.4679  1.9790    1.6063    1.2804   -0.2083    0.0577    0.0206    0.3572   1.6572    0.7488    1.6666    1.9830    2.6914    1.2521    1.8691    1.6855    0.6242    0.1763    1.3490    0.6955    1.2941     1.0475    0.4319     0.0312    0.5802   -0.6177];
Rxx = zeros( 1, length(xn) );
for m = 0 : length(xn) - 1
    i = 1;
    while i+m <= length(xn)
        Rxx(m+1) = Rxx(m+1) + xn(i) * xn(i + m);
        i = i + 1;
    end
    Rxx(m+1) = Rxx(m+1) / 32;
end
Rxx
%结果
Rxx =

  1101.9271    1.6618    1.5381    1.3545    1.1349    0.9060    0.8673    0.7520    0.7637    0.8058

  11200.8497    0.8761    0.9608    0.8859    0.7868    0.7445    0.6830    0.5808    0.5622    0.5134

  21300.4301    0.3998    0.3050    0.2550    0.1997    0.1282    0.0637    0.0329   -0.0015   -0.0089

  3132-0.0143   -0.0083

由此可得Rxx,取前四位,即R(0)-R(3),带入矩阵,用同样的方法可得估计值:
a ^ 1 = − 0.6984 a ^ 2 = − 0.2748 a ^ 3 = 0.0915 σ ^ w 2 = 0.4678 \hat a_1=-0.6984\\ \hat a_2=-0.2748\\ \hat a_3=0.0915\\ \hat\sigma_w^2=0.4678 a^1=0.6984a^2=0.2748a^3=0.0915σ^w2=0.4678
与真实AR模型有以下误差:
e 1 = 0.1151 e 2 = 0.1001 e 3 = 0.0498 e σ = 0.5322 e_1=0.1151\\ e_2=0.1001\\ e_3=0.0498\\ e_\sigma=0.5322 e1=0.1151e2=0.1001e3=0.0498eσ=0.5322
这是因为只有一部分观测数值,不能完全理想的还原AR模型,且模拟的白噪声长度也只有32点。

Y-W方程解法——L-D算法

为了获得更精确的估计值,就要建立更高阶的AR模型,但同时观测值求解的计算量会增加很多。因此把AR模型和预测系统联系起来,用另一个方法估计AR模型参数。

从AR模型表达式可知其当前输出值与过去输出值有关。可以通过预测的方法利用信号的前后相关性估计未来的信号值,即前向预测,可以表示为:
x ^ ( n ) = − ∑ k = 1 m a m ( k ) x ( n − k ) \hat x(n)=-\sum_{k=1}^{m}{a_m(k)x(n-k)} x^(n)=k=1mam(k)x(nk)
m为预测器的阶数,k=1,2,3…m。

预测结果与真实值之间的误差,即前向预测误差e(n):
e ( n ) = x ( n ) − x ^ ( n ) = x ( n ) + ∑ k = 1 m a m ( k ) x ( n − k ) e(n)=x(n)-\hat x(n)=x(n)+\sum_{k=1}^{m}{a_m(k)x(n-k)} e(n)=x(n)x^(n)=x(n)+k=1mam(k)x(nk)
将e(n)看作系统的输出,x(n)看作输入,得到系统函数:
E ( z ) X ( z ) = 1 + ∑ k = 1 m a m ( k ) z − k \frac{E(z)}{X(z)}=1+\sum_{k=1}^{m}{a_m(k)z^{-k}} X(z)E(z)=1+k=1mam(k)zk
这里假设m=p,即两个系统——预测器和AR模型阶数相同,且预测系数和AR模型参数相同。

有w(n)=e(n)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7OnSGXlF-1592722510260)(E:\大三下\数据压缩\作业七\两个系统.png)]

求预测误差均方值:
E [ e 2 ( n ) ] = E [ ( x ( n ) + ∑ k = 1 m a m ( k ) x ( n − k ) ) 2 ] = R x x ( 0 ) + 2 [ ∑ k = 1 m a m ( k ) R x x ( k ) + ∑ k = 1 m ∑ l = 1 m a m ( l ) a m ( k ) R x x ( l − k ) ] E[e^2(n)]=E[(x(n)+\sum_{k=1}^{m}{a_m(k)x(n-k)})^2]\\ =R_{xx}(0)+2[\sum_{k=1}^{m}{a_m(k)R_{xx}(k)}+\sum_{k=1}^{m}\sum_{l=1}^{m}{a_m(l)a_m(k)R_{xx}(l-k)}] E[e2(n)]=E[(x(n)+k=1mam(k)x(nk))2]=Rxx(0)+2[k=1mam(k)Rxx(k)+k=1ml=1mam(l)am(k)Rxx(lk)]
要是均方误差最小,即对等式右侧求偏导使其等于零,得到m个等式:
R x x ( l ) = − ∑ k = 1 m a m ( k ) + R x x ( l − k ) l = 1 , 2 , . . . , m R_{xx}(l)=-\sum_{k=1}^{m}{a_m(k)+R_{xx}(l-k)}\quad l=1,2,...,m Rxx(l)=k=1mam(k)+Rxx(lk)l=1,2,...,m
带入均方误差表达式,可得:
R x x ( l ) = R x x ( 0 ) + ∑ k = 1 m a m ( k ) R x x ( k ) 或 E p [ e 2 ( n ) ] = R x x ( 0 ) + ∑ k = 1 m a k R x x ( k ) a k = a m ( k ) m = p R_{xx}(l)=R_{xx}(0)+\sum_{k=1}^{m}{a_m(k)R_{xx}(k)}\\ 或\quad E_p[e^2(n)]=R_{xx}(0)+\sum_{k=1}^{m}{akR_{xx}(k)}\\ a_k=a_m(k)\quad m=p Rxx(l)=Rxx(0)+k=1mam(k)Rxx(k)Ep[e2(n)]=Rxx(0)+k=1makRxx(k)ak=am(k)m=p
同时由于e(n)=w(n),最小均方误差即等于白噪声方差

如此,在计算AR模型参数的时候使用L-D算法,即使用Y-W方程式(递推式)。L-D递推算法是模型阶数逐渐增大的一种算法。

首先计算m=1时的预测系数和预测均方误差(白噪声),然后计算m=2的,一直计算到m=p。每一阶的参数都是从低一阶的参数推导得到的。这样在减小计算量的同时也可以同时寻找最佳阶数,满足精度要求即可停止递推,选定阶数

大致流程图如下:

在这里插入图片描述

推导式为:
{ a m ( k ) = a m − 1 ( k ) + a m ( m ) a m − 1 ( m − k ) a m ( m ) = − R ( m ) + ∑ k = 1 m − 1 a m − 1 ( k ) R ( m − k ) E m − 1 E m = σ w m 2 = [ 1 − a m 2 ( m ) ] E m − 1 = R ( 0 ) ∏ k = 1 m [ 1 − a k 2 ( k ) ] \begin{cases} a_m(k)=a_{m-1}(k)+a_m(m)a_{m-1}(m-k)\\ a_m(m)=-\frac{R(m)+\sum_{k=1}^{m-1}{a_{m-1}(k)R(m-k)}}{E_{m-1}}\\ E_m=\sigma^2_{wm}=[1-a_m^2(m)]E_{m-1}=R(0)\prod_{k=1}^{m}{[1-a_k^2(k)]} \end{cases} am(k)=am1(k)+am(m)am1(mk)am(m)=Em1R(m)+k=1m1am1(k)R(mk)Em=σwm2=[1am2(m)]Em1=R(0)k=1m[1ak2(k)]
其中am(m)称为反射系数。通过初始化E0=R(0),a(0)=1,阶数p,就可以按照流程图进行AR模型参数估计。

L-D算法的优点时计算速度快,所得AR模型必定稳定,且均方误差随着阶数上升而下降。其缺点时在求自相关系数时,假设除了观测值之外的数据都为0,会引入较大误差。

实例

在这里插入图片描述

首先和之前一样,先根据观测值求自相关序列Rxx。

随后根据原理进行初始化,E0=Rxx(0)=1.9271,a0=1,阶数p.

然后根据递推式计算m=1,2,3,当p=3时所得均方误差和前一例题一致,说明这一阶数比较合理。

matlab中有专门实现L-D算法的函数aryule()。

xn = [0.4282    1.1454    1.5597    1.8994    1.6854    2.3075    2.4679    1.9790    1.6063    1.2804   -0.2083    0.0577    0.0206    0.3572    1.6572    0.7488    1.6666    1.9830    2.6914    1.2521    1.8691    1.6855    0.6242    0.1763    1.3490    0.6955    1.2941     1.0475    0.4319     0.0312    0.5802   -0.6177];
Rxx = zeros(1, length(xn));
for m = 0 : length(xn) - 1
    i = 1;
    while i+m <= length(xn)
        Rxx(m+1) = Rxx(m+1) + xn(i) * xn(i + m);
        i = i + 1;
    end
    Rxx(m+1) = Rxx(m+1) / 32;
end
p = 4;
E = zeros(1, p); E(1) = Rxx(1);
a = zeros(p, 3); a(1, 1) = 1;
for m = 1:3
    a(m + 1, m) = Rxx(m + 1);
    for k = 1:(m - 1)
        a(m + 1, m) = a(m + 1, m) + a(m, k) * Rxx(m + 1 - k);
    end
    a(m + 1, m) = - a(m + 1, m) / E(m);
    for k = 1:(m - 1)
       a(m + 1, k) = a(m, k) + a(m + 1, m) * a(m, m - k);
    end 
    E(m + 1) = (1 - a(m + 1, m).^2) * E(m); 
end
%结果
a =

    1.0000         0         0 %m=0
   -0.8623         0         0 %m=1
   -0.6789   -0.2127         0 %m=2
   -0.6984   -0.2748    0.0915 %m=3=p


E =

    1.9271    0.4941    0.4718    0.4678 %m=0,1,2,3

也可以直接使用matlab提供的函数:

xn = [0.4282    1.1454    1.5597    1.8994    1.6854    2.3075    2.4679    1.9790    1.6063    1.2804   -0.2083    0.0577    0.0206    0.3572    1.6572    0.7488    1.6666    1.9830    2.6914    1.2521    1.8691    1.6855    0.6242    0.1763    1.3490    0.6955    1.2941     1.0475    0.4319     0.0312    0.5802   -0.6177];
[a,E]=aryule(xn,3)
%结果
a =

    1.0000   -0.6984   -0.2748    0.0915


E =

    0.4678

AR模型参数估计的各种算法的比较和阶数的选择

为了克服L-D算法的缺点,1968年Burg提出了Burg算法,基本思想是对数据同时机型前项和后向预测,两者的均方误差值和最小为估计准则,进而通过L-F算法递推得到AR模型参数。

其优点为计算效率高,所得AR模型稳定,但递推使用的仍然为L-D算法,没有解决根本缺点。

matlab中有专门的函数arburg(),使用方法如下:

xn = [0.4282    1.1454    1.5597    1.8994    1.6854    2.3075    2.4679    1.9790    1.6063    1.2804   -0.2083    0.0577    0.0206    0.3572    1.6572    0.7488    1.6666    1.9830    2.6914    1.2521    1.8691    1.6855    0.6242    0.1763    1.3490    0.6955    1.2941     1.0475    0.4319     0.0312    0.5802   -0.6177];
[a,E]=arburg(xn,3)
%结果
a =

    1.0000   -0.6982   -0.2626    0.0739


E =

    0.4567
%高阶计算
[a,E]=arburg(xn,12)
%结果
a =

  1101.0000   -0.6495   -0.3066   -0.0934    0.0987    0.4076   -0.1786   -0.0126   -0.0805   -0.0899

  11130.0382    0.1628   -0.2501


E =

    0.3237

计算速度比原来的方法快了很多。

1980年Marple在前人基础上提出了一种高效算法——Marple算法或称不受约束的最小二乘法(LS)。基本思想为:让每一个预测系数的确定直接与前向后向预测的总平方误差最小,此时系数不能从低一阶的系数推导得到了,脱离了L-D算法的大框架。实践表明这种算法更加优越,但不能保证AR模型的稳定性。

最终预测误差

FPE(final predidyion error)准则定义:给定观测长度N,从某个过程的一次观测数据中估计到了预测系数,然后用该预测系数构成的系统处理另一次观察数据,则有预测均方误差,该误差在某个阶数时为最小,其表达式为:
F P E ( p ) = σ ^ w p 2 ( N + P + 1 N − P − 1 ) FPE(p)=\hat\sigma_{wp}^2(\frac{N+P+1}{N-P-1}) FPE(p)=σ^wp2(NP1N+P+1)
随着阶数p的增加,方差减小,而括号内的值增加。因此可以找到最佳的p使FPE最小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值