自适应滤波器之块自适应滤波器

本文对块自适应滤波器作以介绍,如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。

1. 引言

自适应滤波算法主要包含滤波滤波器系数更新两个阶段。从滤波器系数更新这个角度来说,传统的 LMS(可参考 自适应滤波器之 LMS 算法)和 NLMS(可参考 自适应滤波器之 NLMS 算法)算法都是 sample-based algorithm,因为每来一个采样点,它们便更新一次滤波器系数。而块自适应滤波器是来了一个数据块之后才更新一次滤波器系数,本文依然使用横向滤波器(可参考 自适应滤波器之横向滤波器)结构,以块 LMS 算法为主,对块自适应滤波器作以简单介绍。

2. 划分数据块

首先,令
x ⃗ ( n ) = [ x ( n ) , x ( n − 1 ) ⋯ x ( n − M + 1 ) ] T (1) \vec{x}(n) = [x(n), x(n-1) \cdots x(n-M+1)]^T \tag{1} x (n)=[x(n),x(n1)x(nM+1)]T(1)

表示时刻 n n n 的滤波器输入向量(即横向滤波器每个抽头的输入值组成的向量),其中 M M M 表示滤波器的长度, [ ⋅ ] T [\cdot]^T []T 表示向量或矩阵转置。需要注意的是,只有 x ( n ) x(n) x(n) 是时刻 n n n 接收到的新采样点,而其它采样点都是旧的历史数据;

接着,举例说明如何将单独的采样点划分为数据块,令 L L L 表示数据块的长度, k k k 表示数据块的索引。 假设有如下序列,按照数据块的方式(令 L = 4 L = 4 L=4),该序列可以被划分为:
⋯    − 4 ,   − 3 ,   − 2 ,   − 1 , ⏟ k − 1    0 ,   1 ,   2 ,   3 , ⏟ k    4 ,   5 ,   6 ,   7 , ⏟ k + 1 ⋯ \cdots \; \underbrace{-4, \, -3, \, -2, \, -1,}_{k-1} \; \underbrace{0, \, 1, \, 2, \, 3,}_{k} \; \underbrace{4, \, 5, \, 6, \, 7,}_{k+1} \cdots k1 4,3,2,1,k 0,1,2,3,k+1 4,5,6,7,

可以看到,划分数据块的过程其实很简单,即每 L L L 个采样点就划分出一个块而已。 k k k L L L n n n 之间的关系可以表示为:
n = k L + i , i = 0 , 1 ⋯ L − 1    a n d    k = 1 , 2 ⋯ (2) n=kL+i, \quad i=0, 1 \cdots L-1 \; and \; k=1, 2 \cdots \tag{2} n=kL+i,i=0,1L1andk=1,2(2)

3. 滤波器的输入矩阵

上节提到,当接收到一个新的采样点时,对应的滤波器输入为一个向量。那么当接收到一个新的数据块时,对应的滤波器输入为什么形式那?答案是:矩阵形式,且表示为:
A ⃗ T ( k ) = [ x ⃗ ( k L ) , x ⃗ ( k L + 1 ) ⋯ x ⃗ ( k L + L − 1 ) ] (3) \vec{A}^T(k) = [\vec{x}(kL), \vec{x}(kL+1) \cdots \vec{x}(kL+L-1)] \tag{3} A T(k)=[x (kL),x (kL+1)x (kL+L1)](3)

以上节划分得到的第 k k k 个数据块为例,其对应的滤波器输入矩阵 A ⃗ ( k ) \vec{A}(k) A (k) 由表1 给出(令 M = 6 M=6 M=6)。

1 滤波器输入矩阵示例

表1
1 中横向表示滤波器的长度 M = 6 M=6 M=6,纵向表示块长 L = 4 L=4 L=4数值 0 , 1 , 2 , 3 0,1, 2, 3 0,1,2,3 是第 k k k 个数据块; − 1 , − 2 , − 3 , − 4 -1, -2, -3, -4 1,2,3,4 是第 k − 1 k-1 k1 个数据块; − 5 -5 5 属于第 k − 2 k-2 k2 个数据块

可以看到,当接收到一个新数据块时,滤波器的输入就是将新数据块中每个采样点对应的滤波器输入组织成了矩阵的形式而已。

4.LMS 算法

在对整个数据块滤波期间,滤波器的抽头权向量(即横向滤波器每个抽头权值组成的向量)是固定不变的,这是因为块自适应算法是以块为单位来更新滤波器系数的。

令:
h ⃗ ( k ) = [ h 0 ( k ) , h 1 ( k ) ⋯ h M − 1 ( k ) ] T (4) \vec{h}(k) = [h_0(k), h_1(k) \cdots h_{M-1}(k)]^T \tag{4} h (k)=[h0(k),h1(k)hM1(k)]T(4)

表示滤波器的抽头权向量,则滤波器对数据块中每个采样点产生的输出为:
y ( k L + i ) = x ⃗ T ( k L + i ) h ⃗ ( k ) , i = 0 , 1 ⋯ L − 1 (5) y(kL+i) = \vec{x}^{T}(kL+i) \vec{h}(k), \quad i=0, 1 \cdots L-1 \tag{5} y(kL+i)=x T(kL+i)h (k),i=0,1L1(5)

d ( k L + i ) d(kL+i) d(kL+i) 表示对应点的期望响应,则误差信号为:
e ( k L + i ) = d ( k L + i ) − y ( k L + i ) , i = 0 , 1 ⋯ L − 1 (6) e(kL+i) = d(kL+i) - y(kL+i), \quad i=0, 1 \cdots L-1 \tag{6} e(kL+i)=d(kL+i)y(kL+i),i=0,1L1(6)

其矩阵形式为:
y ⃗ ( k ) = [ y ( k L ) , y ( k L + 1 ) , ⋯   , y ( k L + L − 1 ) ] T = A ⃗ ( k ) h ⃗ ( k ) (7) \begin{aligned} \vec{y}(k) &= [y(kL), y(kL+1), \cdots, y(kL+L-1)]^{T} \\ &= \vec{A}(k) \vec{h}(k) \end{aligned} \tag{7} y (k)=[y(kL),y(kL+1),,y(kL+L1)]T=A (k)h (k)(7)

d ⃗ ( k ) = [ d ( k L ) , d ( k L + 1 ) , ⋯   , d ( k L + L − 1 ) ] T (8) \vec{d}(k) = [d(kL), d(kL+1), \cdots, d(kL+L-1)]^{T} \tag{8} d (k)=[d(kL),d(kL+1),,d(kL+L1)]T(8)

e ⃗ ( k ) = [ e ( k L ) , e ( k L + 1 ) , ⋯   , e ( k L + L − 1 ) ] T = d ⃗ ( k ) − y ⃗ ( k ) (9) \begin{aligned} \vec{e}(k) &= [e(kL), e(kL+1), \cdots, e(kL+L-1)]^{T} \\ &= \vec{d}(k) - \vec{y}(k) \end{aligned} \tag{9} e (k)=[e(kL),e(kL+1),,e(kL+L1)]T=d (k)y (k)(9)

结合传统的 LMS 算法,块 LMS 算法的抽头权向量更新公式可以表示为:
h ⃗ ( k + 1 ) = h ⃗ ( k ) + μ ∑ i = 0 L − 1 x ⃗ ( k L + i ) e ( K L + i ) (10) \vec{h}(k+1) = \vec{h}(k) + \mu \sum_{i=0}^{L-1} \vec{x}(kL+i) e(KL+i) \tag{10} h (k+1)=h (k)+μi=0L1x (kL+i)e(KL+i)(10)

其矩阵形式为:
h ⃗ ( k + 1 ) = h ⃗ ( k ) + μ A ⃗ T ( k ) e ⃗ ( k ) (11) \vec{h}(k+1) = \vec{h}(k) + \mu \vec{A}^{T}(k) \vec{e}(k) \tag{11} h (k+1)=h (k)+μA T(k)e (k)(11)

( 7 ) 、 ( 9 ) 、 ( 11 ) (7)、(9)、(11) (7)(9)(11) 共同构成了块 LMS 算法。

5. 块长的选择

    L = M L=M L=M,从计算复杂度观点看,这是最佳选择;

    L < M L<M L<M,由于块的长度小于滤波器的长度,这种情况有降低处理时延的好处;

    L > M L>M L>M,在自适应过程中会产生冗余计算。

一般选取 L = M L=M L=M,它是大多数实际应用中人们更喜欢的一种自适应滤波选择。

6. 总结

块自适应滤波器是研究频域自适应滤波器的基础,关于块自适应滤波器的步长 μ \mu μ 及其它更多的讨论可参考 论文笔记之 BLMS

7. 参考文献

[1] 自适应滤波器原理(第四版) 原作者:simon haykin

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值