本文首发在我的个人博客“宅到没朋友”,欢迎来玩!http://www.weekreport.cn/archives/481
上述两个过程中,求滤波器最优权向量的学习过程是最优滤波的关键!
上图中的横向滤波器结构如下图,学习过程的任务就是求最优权向量 w ⃗ = [ w 0 w 1 ⋯ w M − 1 ] T \vec{w}=\left[ w_{0} \quad w_{1} \cdots w_{M-1} \right]^{T} w=[w0w1⋯wM−1]T
定义 E ( n ) E\left(n\right) E(n)的平均功率为:
J ( w ) = { ∣ e ( n ) ∣ 2 } = σ d 2 − p ⃗ H w ⃗ − w ⃗ H p ⃗ + w ⃗ H R w ⃗ ( 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) J(w)={∣e(n)∣2}=σd2−pHw−wHp+wHRw(1)
其中:
J ( w ⃗ ) J\left(\vec{w}\right) J(w)也被称为误差性能面或者均方误差。
利用凸优化知识对 J ( w ⃗ ) J\left(\vec{w}\right) J(w)求梯度并令梯度为0,即:
▽ J ( w ⃗ ) = − 2 p ⃗ + 2 R w ⃗ = 0 ( 2 ) \bigtriangledown J\left ( \vec{w} \right )=-2\vec{p}+2R\vec{w}=0\quad(2) ▽J(w)=−2p+2Rw=0(2)
化简得到维纳-霍夫方程:
R w 0 ⃗ = p ⃗ ( 3 ) R\vec{w_{0}}=\vec{p}\quad(3) Rw0=p(3)
R R R是非奇异的,方程两边同时乘以 R − 1 R^{-1} R−1得到最优权向量 w ⃗ 0 \vec{w}_{0} w0
w 0 ⃗ = R − 1 p ⃗ ( 4 ) \vec{w_{0}} = R^{-1}\vec{p}\quad(4) w0=R−1p(4)
直接利用维纳-霍夫方程求滤波器的最优权向量涉及矩阵求逆 ( R − 1 ) (R^{-1}) (R−1),计算量大,工程上实现困难!使用自适应算法替代矩阵求逆去调整 w ⃗ ( n ) \vec{w}\left(n\right) w(n),使得误差最小。
沿着 J ( w ⃗ ) J\left(\vec{w}\right) J(w)的负梯度方向调整权向量 w ⃗ \vec{w} 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(n+1)=w(n)+Δw(5)
Δ w ⃗ = − 1 2 μ ▽ J ( w ⃗ ( n ) ) ( 6 ) \vec{\Delta w}=-\frac{1}{2} \mu \bigtriangledown J\left(\vec{w}\left(n\right)\right)\quad(6) Δw=−21μ▽J(w(n))(6)
由式(2)、(5)、(6)可以得到:
w ⃗ ( n + 1 ) = w ⃗ ( n ) + μ [ p ⃗ − R w ⃗ ( 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) w(n+1)=w(n)+μ[p−Rw(n)](7)
μ > 0 \mu>0 μ>0被称为步长参数或步长因子,该参数对自适应算法发迭代速度有很大影响。
由(7)式可知:
对于平稳随机信号,若该信号是各态历经(均方遍历)的,则可用时间平均代替统计平均,用时间自相关代替统计自相关。
R ≐ R ^ = 1 N ∑ i = 1 N u ( i ) u H ( i ) = u ⃗ ( n ) u ⃗ H ( 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) R≐R^=N1i=1∑Nu(i)uH(i)=u(n)uH(n)(8)
p ⃗ ≐ p ^ ⃗ = 1 N ∑ i = 1 N u ( 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) 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 ) \vec{\hat{w}}(n+1) =\vec{ \hat{w}}\left(n\right)+\mu \vec{u}\left(n\right)e^{*}\left(n\right)\quad(10) w^(n+1)=w^(n)+μu(n)e∗(n)(10)
(10)式就是LMS算法的迭代过程。
(1):产生512点AR过程样本序列。(样本序列为512点时μ=0.005的迭代过程尚未收敛,所以实验分别用512点和512*4点做了对比试验)
(2):在不同步长情况下(μ=0.05和μ=0.005)用LMS滤波器估计w1和w2。
图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可以较好的逼近J(∞)。
由图4和表1可以看到μ=0.005的学习曲线收敛的较慢,μ=0.05的学习曲线收敛的较快,但μ=0.005的学习曲线最后收敛的值更小,即误差更小。还可以看到μ越小,失调参数M越小,稳定性能更好。
点此下载源码!