維納濾波器自適應算法-SD與LMS算法(附Matlab代碼)

本文首發在我的個人博客“宅到沒朋友”,歡迎來玩!http://www.weekreport.cn/archives/481

1.維納濾波器基本理論

濾波器系統如下圖:
在這裏插入圖片描述

  • 學習過程:K1打向A1,K2打向A2,求取橫向濾波器最優權向量。
  • 工作過程:K1打向B1,K2打向B2,對輸入信號進行濾波處理。

上述兩個過程中,求濾波器最優權向量的學習過程是最優濾波的關鍵!

上圖中的橫向濾波器結構如下圖,學習過程的任務就是求最優權向量w=[w0w1wM1]T\vec{w}=\left[ w_{0} \quad w_{1} \cdots w_{M-1} \right]^{T}
在這裏插入圖片描述

  • d(n)d\left(n\right):期望響應
  • d^(n)\hat{d}\left(n\right):對期望響應的估計,d^(n)=i=0M1wiu(ni)=wHu(n)=uT(n)wn\hat{d}\left(n\right) = \sum_{i=0}^{M-1}w_{i}^{}u\left(n-i\right )=\vec{w}^{H}\vec{u}\left(n \right )=\vec{u}^{T}\left(n \right )\vec{w}^{n}
  • e(n)e\left( n \right):估計誤差,e(n)=d(n)d^(n)e\left(n\right) = d\left(n\right)-\hat{d}\left(n\right)

定義E(n)E\left(n\right)的平均功率爲:
J(w)={e(n)2}=σd2pHwwHp+wHRw(1)J\left(w\right)=\left\{ \left|e \left(n \right)\right|^{2}\right\}=\sigma_{d}^{2}-\vec{p}^{H}\vec{w}-\vec{w}^{H}\vec{p}+\vec{w}^{H}R\vec{w}\quad(1)

其中:

  • d(n)d\left( n \right)的平均功率爲:σd2=E{d(n)2}\sigma_{d}^{2}=E\left\{\left|d\left(n\right)\right|^{2}\right\}
  • 互相關向量:p=E{u(n)d(n)}p=E\left\{\vec{u}\left(n\right)d^{*}\left(n\right)\right\}
  • u(n)u\left(n\right)的自相關矩陣:R=E{u(n)uH(n)}R=E\left\{\vec{u}\left(n\right)\vec{u}^{H}\left(n\right)\right\}

J(w)J\left(\vec{w}\right)也被稱爲誤差性能面或者均方誤差。

利用凸優化知識對J(w)J\left(\vec{w}\right)求梯度並令梯度爲0,即:

J(w)=2p+2Rw=0(2)\bigtriangledown J\left ( \vec{w} \right )=-2\vec{p}+2R\vec{w}=0\quad(2)

化簡得到維納-霍夫方程

Rw0=p(3)R\vec{w_{0}}=\vec{p}\quad(3)

RR是非奇異的,方程兩邊同時乘以R1R^{-1}得到最優權向量w0\vec{w}_{0}

w0=R1p(4)\vec{w_{0}} = R^{-1}\vec{p}\quad(4)

2.維納濾波自適應算法

直接利用維納-霍夫方程求濾波器的最優權向量涉及矩陣求逆(R1)(R^{-1}),計算量大,工程上實現困難!使用自適應算法替代矩陣求逆去調整w(n)\vec{w}\left(n\right),使得誤差最小。
在這裏插入圖片描述

2.1 最陡下降算法(SD)

沿着J(w)J\left(\vec{w}\right)的負梯度方向調整權向量w\vec{w}以尋求最優權向量。

w(n+1)=w(n)+Δw(5)\vec{w}\left(n+1\right)=\vec{w}\left(n\right)+\vec{\Delta w}\quad(5)

Δw=12μJ(w(n))(6)\vec{\Delta w}=-\frac{1}{2} \mu \bigtriangledown J\left(\vec{w}\left(n\right)\right)\quad(6)
由式(2)、(5)、(6)可以得到:
w(n+1)=w(n)+μ[pRw(n)](7)\vec{w}\left(n+1\right)=\vec{w}\left(n\right)+\mu \left[\vec{p}-R\vec{w}\left(n\right)\right]\quad(7)

μ>0\mu>0被稱爲步長參數或步長因子,該參數對自適應算法發迭代速度有很大影響。

2.2 LMS(最小均方)算法

由(7)式可知:

  • 若互相關向量p和自相關矩陣R確定,SD算法的迭代過程和結果就已經確定;
  • SD算法基於統計和概率的思想,其結果與輸入信號的變化無關,不具有自適應性。

對於平穩隨機信號,若該信號是各態歷經(均方遍歷)的,則可用時間平均代替統計平均,用時間自相關代替統計自相關。

RR^=1Ni=1Nu(i)uH(i)=u(n)uH(n)(8)R\doteq\hat{R}=\frac{1}{N}\sum_{i=1}^{N}u\left(i\right)u^{H}\left(i\right)=\vec{u}\left(n\right)\vec{u}^{H}\left(n\right)\quad(8)

pp^=1Ni=1Nu(i)d(i)=u(n)d(n)(9)\vec{p}\doteq\vec{\hat{p}}=\frac{1}{N}\sum_{i=1}^{N}u\left(i\right)d^{*}\left(i\right)=\vec{u}\left(n\right)d^{*}\left(n\right)\quad(9)

由式(7)、(8)、(9)可得:

w^(n+1)=w^(n)+μu(n)e(n)(10)\vec{\hat{w}}(n+1) =\vec{ \hat{w}}\left(n\right)+\mu \vec{u}\left(n\right)e^{*}\left(n\right)\quad(10)

(10)式就是LMS算法的迭代過程。

2.2.1 LMS算法與SD算法的區別與聯繫

  • SD算法中,互相關向量p\vec{p}和自相關矩陣RR都是確定量,得到的w(n)\vec{w}\left(n\right)是確定的向量序列。
  • LMS算法中,u(n)\vec{u}\left(n\right)e(n)\vec{e}\left(n\right)都是隨機過程,所以w^(n)\vec{\hat{w}}\left(n\right)是隨機向量。
  • LMS算法是一種隨機梯度算法。
    ^J(n)=2p^+2R^w(n)=2u(n)e(n)\hat{\bigtriangledown}J\left(n\right)=-2\vec{\hat{p}}+2\hat{R}\vec{w}\left(n\right)=-2\vec{u}(n)e^{*}(n)

2.2.2 LMS算法步驟

  1. 初始化:n=0
    權向量:w^(0)=0\vec{\hat{w}}(0)=\vec{0}
    估計誤差:e(0)=d(0)d^(0)=d(0)e(0) = d(0)-\hat{d}(0)=d(0)
    輸入向量:u(0)=[u(0)u(1)u(M+1)]T=[u(0)00]T\vec{u}(0)=[u(0)\quad u(-1) \cdots u(-M+1)]^{T}=[u(0)\quad 0 \cdots 0]^{T}
  2. n=0,1,2…
    更新權向量:w^(n+1)=w^(n)+μu(n)e(n)\vec{\hat{w}}(n+1) =\vec{ \hat{w}}\left(n\right)+\mu \vec{u}\left(n\right)e^{*}\left(n\right)
    更新期望信號的估計:d^(n+1)=w^H(n+1)u(n+1)\hat{d}(n+1)=\vec{\hat{w}}^{H}(n+1)\vec{u}(n+1)
    更新估計誤差:e(n+1)=d(n+1)d^(n+1))e(n+1)=d(n+1)-\hat{d}(n+1))
  3. 令n=n+1,轉到步驟2。

3.算例

(1):產生512點AR過程樣本序列。(樣本序列爲512點時μ=0.005的迭代過程尚未收斂,所以實驗分別用512點和512*4點做了對比試驗)
(2):在不同步長情況下(μ=0.05和μ=0.005)用LMS濾波器估計w1和w2。


(3):在(2)的條件下進行100次獨立實驗計算剩餘均方誤差和失調參數,並畫出學習曲線。
(4):比較μ=0.05和μ=0.005時二者學習曲線的區別。

4.Matlab仿真結果

圖1 樣本序列(N=512)圖1 樣本序列(N=512)

圖2 濾波器權係數迭代
圖2 濾波器權係數迭代(N=5124,μ=0.05)
圖3 濾波器權係數(N=512*4,μ=0.005)
圖3 濾波器權係數(N=512
4,μ=0.005)
圖4 學習曲線(N=512*4)
圖4 學習曲線(N=512*4)

 步長J(∞)JM
μ=0.050.00380.00520.0516
μ=0.0050.00040.00040.0049
表1 剩餘均方誤差(J)和失調參數(M)

由表1可以看到當樣本點數足夠多時,得到的剩餘均方誤差J可以較好的逼近J(∞)。

由圖4和表1可以看到μ=0.005的學習曲線收斂的較慢,μ=0.05的學習曲線收斂的較快,但μ=0.005的學習曲線最後收斂的值更小,即誤差更小。還可以看到μ越小,失調參數M越小,穩定性能更好。

5.Matlab源碼

點此下載源碼!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章