自适应滤波器
自适应滤波器由参数可调的数字滤波器和自适应算法两部分组成。
数字滤波器可以是有限型FIR或无限型IIR。IIR滤波器有正向通路和反馈通路,可能产生不稳定信号导致滤波器振荡,而FIR只有正向通路,处理简单,在自适应滤波中,一般采用FIR滤波器。
自适应滤波器实际是一种能够跟踪输入信号的统计特性变化,按照最优滤波准则,调节自身参数的,计算最优滤波效果的特殊维纳滤波器。
最优滤波准则
最优滤波准则规定了某种准则下得到滤波器的对应的最佳参数,但这个最佳参数不能通过现有的客观存在计算得到,而是指出自适应滤波器调整参数的方向。常见的最佳滤波准则:最小均方误差准则, 最小二乘准则等, 相应的自适应算法为 最小均方算法(least mean squarse, LMS), 递推最小二乘法(recursive least squarse, RLS)。其中LMS 是最基本的,计算量小适合计算机应用, 但对于能量变化的很大的信号,稳定性较差;而RLS 性能好,但计算量大不易实现。
本文将介绍主要最小均方(LMS)自适应滤波器。
LMS
自适应横向(M阶)滤波器在第 n n 时刻的输入信号 x(n) x ( n ) 和滤波器权重系数 w(n) w ( n ) , x(n) x ( n ) 和 w(n) w ( n ) 都是长度为M的序列,由于滤波器输出是 w(n) w ( n ) 和 x(n) x ( n ) 卷积,即 w(n) w ( n ) 分别与 x(n) x ( n ) 的(M阶)延迟乘积组合,为方便分别定义为:
X(n)=[x(n),x(n−1),……,x(n−M+1)]T X ( n ) = [ x ( n ) , x ( n − 1 ) , … … , x ( n − M + 1 ) ] T
W(n)=[w1(n),w2(n),……,wM(n)]T W ( n ) = [ w 1 ( n ) , w 2 ( n ) , … … , w M ( n ) ] T
上式中, X(n) X ( n ) 为以 x(n) x ( n ) 的M个延迟输入序列构成的矩阵, W(n) W ( n ) 为以 w(n) w ( n ) 中M个滤波系数构成向量,则滤波器的输出信号为 y(n) y ( n ) 构成的对应向量 Y(n) Y ( n ) :
Y(n)=W(n)TX(n) Y ( n ) = W ( n ) T X ( n )
产生的误差为:
ℓ(n)=s(n)−y(n) ℓ ( n ) = s ( n ) − y ( n )
式中,
s(n) s ( n ) 为期望信号。记符号
↔ ↔ 为将向量转化为对应序列,如
y(n)=Y(n)←→− y ( n ) = Y ( n ) ↔ 按照均方误差函数:
ε(n)=E[ℓ2(n)]=E[|s(n)−y(n)|2]=E[s2(n)]−2E[s(n)y(n)]+E[y2(n)] =E[s2(n)]−2E[s(n)W(n)TX(n)←→−−−−−−− ]+E[W(n)TX(n)←→−−−−−−− W(n)TX(n)←→−−−−−−−] ε ( n ) = E [ ℓ 2 ( n ) ] = E [ | s ( n ) − y ( n ) | 2 ] = E [ s 2 ( n ) ] − 2 E [ s ( n ) y ( n ) ] + E [ y 2 ( n ) ] = E [ s 2 ( n ) ] − 2 E [ s ( n ) W ( n ) T X ( n ) ↔ ] + E [ W ( n ) T X ( n ) ↔ W ( n ) T X ( n ) ↔ ]
可以等效转化为矩阵计算:
ε(n)=E[s2(n)]−2WTP+W(n)TX(n)TX(n)W(n) =E[s2(n)]−2WTP+WTRW(1) (1) ε ( n ) = E [ s 2 ( n ) ] − 2 W T P + W ( n ) T X ( n ) T X ( n ) W ( n ) = E [ s 2 ( n ) ] − 2 W T P + W T R W
上式中,
W W 是滤波器系数矩阵;
R R 是输入信号
x(n) x ( n ) 的自相关矩阵;
P P 是期望信号
s(n) s ( n ) 和信号
x(n) x ( n ) 的互相关向量:
P=[E[s(n)x(n)]E[s(n)x(n−1)]⋯E[s(n)x(n−M+1)] ]T=[rsx(0)rsx(−1)⋯rsx(1−M)]T P = [ E [ s ( n ) x ( n ) ] E [ s ( n ) x ( n − 1 ) ] ⋯ E [ s ( n ) x ( n − M + 1 ) ] ] T = [ r s x ( 0 ) r s x ( − 1 ) ⋯ r s x ( 1 − M ) ] T
R=⎡⎣⎢⎢⎢⎢⎢E[x(n)x(n)]E[x(n−1)x(n)]⋮E[x(n−M+1)x(n)]E[x(n)x(n−1)]E[x(n−1)x(n−1)]⋮E[x(n−M+1)x(n−1)]⋯⋯⋱⋯E[x(n)x(n−M+1)]E[x(n−1)x(n−M+1)]⋮E[x(n−M+1)x(n−M+1)]⎤⎦⎥⎥⎥⎥⎥ =⎡⎣⎢⎢⎢⎢⎢rxx(0)rxx(−1)⋮rxx(−M+1)rxx(1)rxx(0)⋮rxx(−M+2)⋯⋯⋱⋯rxx(M−1)rxx(M−2)⋮rxx(0)]⎤⎦⎥⎥⎥⎥⎥ R = [ E [ x ( n ) x ( n ) ] E [ x ( n ) x ( n − 1 ) ] ⋯ E [ x ( n ) x ( n − M + 1 ) ] E [ x ( n − 1 ) x ( n ) ] E [ x ( n − 1 ) x ( n − 1 ) ] ⋯ E [ x ( n − 1 ) x ( n − M + 1 ) ] ⋮ ⋮ ⋱ ⋮ E [ x ( n − M + 1 ) x ( n ) ] E [ x ( n − M + 1 ) x ( n − 1 ) ] ⋯ E [ x ( n − M + 1 ) x ( n − M + 1 ) ] ] = [ r x x ( 0 ) r x x ( 1 ) ⋯ r x x ( M − 1 ) r x x ( − 1 ) r x x ( 0 ) ⋯ r x x ( M − 2 ) ⋮ ⋮ ⋱ ⋮ r x x ( − M + 1 ) r x x ( − M + 2 ) ⋯ r x x ( 0 ) ] ]
式(1)中,对 W W 求导,并令导数为0,同时假设 R R 是非奇异,可得最佳滤波器系数 Wo W o :
Wo=R−1P W o = R − 1 P
上述最佳滤波器系数
Wo W o ,即为此刻滤波器的维纳解。均方误差函数
ε(n) ε ( n ) 是滤波系数
W W 的二次方程,是一个多维的抛物曲面。
最陡梯度下降法
上述算法对一个已知道全部输入输出的系统,即第 n n 时刻是最后时刻,那么通过整体统计量平均可以直接解出最优解 Wo W o ,或者说可以通过维纳霍夫方程直接求解维纳滤波器。然而对一个进行的系统,整体即是未知的,只能得到第 n n 时刻的部分统计量,求得此刻的最优解,因此需要某种方法根据每个时刻变化的统计量,不断跟踪更新最优解。
自适应滤波器就是以任意初始系数 WS W S ,即误差曲面上的某一点,经过多次自适应调节,使系数 W W 向最优值 Wo W o 接近,实现最佳维纳滤波。
最陡梯度下降法可以用来对自适应滤波器系数寻优,根据误差曲面的梯度信息,在最陡下降的方向即梯度向量的负方向逐步调整逼近曲面极小值,获得最佳滤波。
在误差曲面 ε(n) ε ( n ) 第n个时刻的滤波系数 W(n) W ( n ) ,定义此刻的M*1 维梯度矢量为 ∇(n) ∇ ( n ) , M 是滤波系数个数。 按照最陡梯度下降法调节滤波系数,则在第n+1时刻的滤波系数可更新为:
W(n+1)=W(n)+12u[−∇(n)] W ( n + 1 ) = W ( n ) + 1 2 u [ − ∇ ( n ) ]
式中,
u u 是一个正实数,通常称为自适应收敛系数或步长;
∇(n) ∇ ( n ) 为M维梯度矢量,其表达式为:
∇(n)=∂E[ℓ2(n)]∂W(n)=[∂E[ℓ2(n)]∂w1(n) ∂E[ℓ2(n)]∂w2(n) …… ∂E[ℓ2(n)]∂wm(n)]=[ −2E[e(n)x(n)] −2E[e(n)x(n−1)] …… −2E[e(n)x(n−m+1)] ] ∇ ( n ) = ∂ E [ ℓ 2 ( n ) ] ∂ W ( n ) = [ ∂ E [ ℓ 2 ( n ) ] ∂ w 1 ( n ) ∂ E [ ℓ 2 ( n ) ] ∂ w 2 ( n ) … … ∂ E [ ℓ 2 ( n ) ] ∂ w m ( n ) ] = [ − 2 E [ e ( n ) x ( n ) ] − 2 E [ e ( n ) x ( n − 1 ) ] … … − 2 E [ e ( n ) x ( n − m + 1 ) ] ]
定义
E[ℓ(n)X(n)] E [ ℓ ( n ) X ( n ) ] 为上述梯度方向矢量,即
E[ℓ(n)X(n)]=[ E[e(n)x(n)] E[e(n)x(n−1)] …… E[e(n)x(n−m+1)] ] E [ ℓ ( n ) X ( n ) ] = [ E [ e ( n ) x ( n ) ] E [ e ( n ) x ( n − 1 ) ] … … E [ e ( n ) x ( n − m + 1 ) ] ]
可以看出,当梯度为 0 时, 误差信号序列与输入信号的各延迟序列乘积为0,也即此时误差信号
ℓ(n) ℓ ( n ) 与输入信号
x(n) x ( n ) 正交不相关。
将上面梯度矢量带入滤波系数的更新方程中,可得:
W(n+1)=W(n)+uE[ℓ(n)X(n)] W ( n + 1 ) = W ( n ) + u E [ ℓ ( n ) X ( n ) ]
为了保证最陡下降法的收敛性,步长
u u 需满足收敛条件:
0<u<1λmax 0 < u < 1 λ m a x , 其中
λmax λ m a x 是输入信号自相关矩阵
R R 的最大特征值。
待续。。。。。。。