本文首發在我的個人博客“宅到沒朋友”,歡迎來玩!http://www.weekreport.cn/archives/481
1.維納濾波器基本理論
濾波器系統如下圖:
- 學習過程:K1打向A1,K2打向A2,求取橫向濾波器最優權向量。
- 工作過程:K1打向B1,K2打向B2,對輸入信號進行濾波處理。
上述兩個過程中,求濾波器最優權向量的學習過程是最優濾波的關鍵!
上圖中的橫向濾波器結構如下圖,學習過程的任務就是求最優權向量w=[w0w1⋯wM−1]T
- d(n):期望響應
- d^(n):對期望響應的估計,d^(n)=∑i=0M−1wiu(n−i)=wHu(n)=uT(n)wn
- e(n):估計誤差,e(n)=d(n)−d^(n)
定義E(n)的平均功率爲:
J(w)={∣e(n)∣2}=σd2−pHw−wHp+wHRw(1)
其中:
- d(n)的平均功率爲:σd2=E{∣d(n)∣2}。
- 互相關向量:p=E{u(n)d∗(n)}。
- u(n)的自相關矩陣:R=E{u(n)uH(n)}。
J(w)也被稱爲誤差性能面或者均方誤差。
利用凸優化知識對J(w)求梯度並令梯度爲0,即:
▽J(w)=−2p+2Rw=0(2)
化簡得到維納-霍夫方程:
Rw0=p(3)
R是非奇異的,方程兩邊同時乘以R−1得到最優權向量w0
w0=R−1p(4)
2.維納濾波自適應算法
直接利用維納-霍夫方程求濾波器的最優權向量涉及矩陣求逆(R−1),計算量大,工程上實現困難!使用自適應算法替代矩陣求逆去調整w(n),使得誤差最小。
2.1 最陡下降算法(SD)
沿着J(w)的負梯度方向調整權向量w以尋求最優權向量。
w(n+1)=w(n)+Δw(5)
Δw=−21μ▽J(w(n))(6)
由式(2)、(5)、(6)可以得到:
w(n+1)=w(n)+μ[p−Rw(n)](7)
μ>0被稱爲步長參數或步長因子,該參數對自適應算法發迭代速度有很大影響。
2.2 LMS(最小均方)算法
由(7)式可知:
- 若互相關向量p和自相關矩陣R確定,SD算法的迭代過程和結果就已經確定;
- SD算法基於統計和概率的思想,其結果與輸入信號的變化無關,不具有自適應性。
對於平穩隨機信號,若該信號是各態歷經(均方遍歷)的,則可用時間平均代替統計平均,用時間自相關代替統計自相關。
R≐R^=N1i=1∑Nu(i)uH(i)=u(n)uH(n)(8)
p≐p^=N1i=1∑Nu(i)d∗(i)=u(n)d∗(n)(9)
由式(7)、(8)、(9)可得:
w^(n+1)=w^(n)+μu(n)e∗(n)(10)
(10)式就是LMS算法的迭代過程。
2.2.1 LMS算法與SD算法的區別與聯繫
- SD算法中,互相關向量p和自相關矩陣R都是確定量,得到的w(n)是確定的向量序列。
- LMS算法中,u(n)和e(n)都是隨機過程,所以w^(n)是隨機向量。
- LMS算法是一種隨機梯度算法。
▽^J(n)=−2p^+2R^w(n)=−2u(n)e∗(n)
2.2.2 LMS算法步驟
- 初始化:n=0
權向量:w^(0)=0
估計誤差:e(0)=d(0)−d^(0)=d(0)
輸入向量:u(0)=[u(0)u(−1)⋯u(−M+1)]T=[u(0)0⋯0]T
- n=0,1,2…
更新權向量:w^(n+1)=w^(n)+μu(n)e∗(n)
更新期望信號的估計:d^(n+1)=w^H(n+1)u(n+1)
更新估計誤差:e(n+1)=d(n+1)−d^(n+1))
- 令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)
圖2 濾波器權係數迭代(N=5124,μ=0.05)
圖3 濾波器權係數(N=5124,μ=0.005)
圖4 學習曲線(N=512*4)
步長 | J(∞) | J | M |
μ=0.05 | 0.0038 | 0.0052 | 0.0516 |
μ=0.005 | 0.0004 | 0.0004 | 0.0049 |
表1 剩餘均方誤差(J)和失調參數(M)
由表1可以看到當樣本點數足夠多時,得到的剩餘均方誤差J可以較好的逼近J(∞)。
由圖4和表1可以看到μ=0.005的學習曲線收斂的較慢,μ=0.05的學習曲線收斂的較快,但μ=0.005的學習曲線最後收斂的值更小,即誤差更小。還可以看到μ越小,失調參數M越小,穩定性能更好。
5.Matlab源碼
點此下載源碼!