块自适应滤波器

如有不当之处欢迎批评指正

目录

  • 1. 块自适应滤波器
  • 2. LMS算法
  • 3. 块长度的选择
  • 4. 参考文献

1. 块自适应滤波器

  传统的LMS(点击学习LMS算法)和NLMS(点击学习NLMS算法)算法都是sample based algorithm,即每来一个样值便更新一次滤波器系数。顾名思义,块自适应滤波器是每来一个数据块更新一次滤波器系数,此处块自适应滤波器采用横向滤波器(点击此处学习横向滤波器)的结构

  令
x(n)=[x(n),x(n−1),...,x(n−M+1)]T\mathbf{x}(n)=[x(n),x(n-1),...,x(n-M+1)]^Tx(n)=[x(n),x(n1),...,x(nM+1)]T

  表示时刻nnn输入信号向量(即横向滤波器每个抽头的输入值);

  令
h(n)=[h0(n),h1(n),...,hM−1(n)]T\mathbf{h}(n)=[h_0(n),h_1(n),...,h_{M-1}(n)]^Th(n)=[h0(n),h1(n),...,hM1(n)]T

  表示时刻nnn滤波器的抽头权向量,其中MMM表示滤波器的长度,TTT表示向量或矩阵转置。

  令kkk表示块的下标,它与原始样值时间nnn的关系为:
n=kL+in=kL+in=kL+i  i=0,1,...,L−1i=0,1,...,L-1i=0,1,...,L1k=1,2,...k=1,2,...k=1,2,...

  其中LLL表示数据块的长度。第kkk块的输入数据定义为:
AT(k)=[x(kL),x(kL+1),...,x(kL+L−1)]\mathbf{A}^T(k)=[\mathbf{x}(kL),\mathbf{x}(kL+1),...,\mathbf{x}(kL+L-1)]AT(k)=[x(kL),x(kL+1),...,x(kL+L1)]

  在这个输入数据块持续期间,滤波器的抽头权向量保持不变。表1举例说明了滤波器长度M=6M=6M=6,块长度L=4L=4L=4时的结构。

1 输入数据块结构说明

块自适应滤波器_第1张图片

  表1中横向表示滤波器的长度M=6M=6M=6,纵向表示块长度L=4L=4L=4数值0,1,2,30,1,2,30123属于当前块的数据,−1,−2,−3,−4,−5-1,-2,-3,-4,-512345属于之前数据块的数据。

2. LMS算法

  滤波器对输入信号向量产生的对应输出为:
y(kL+i)=hT(k)x(kL+i)(1)y(kL+i)=\mathbf{h}^T(k)\mathbf{x}(kL+i)\tag{1}y(kL+i)=hT(k)x(kL+i)(1)

  令d(kL+)d(kL+)d(kL+)表示期望响应,则误差信号为:
e(kL+i)=d(kL+i)−y(kL+i)(2)e(kL+i)=d(kL+i)-y(kL+i)\tag{2}e(kL+i)=d(kL+i)y(kL+i)(2)

  结合传统的LMS算法,运行在实数据上的块LMS算法的抽头权向量的更新公式如下:
h(k+1)=h(k)+μ∑i=0L−1x(kL+i)e(KL+i)(3)\mathbf{h}(k+1)=\mathbf{h}(k)+\mu\sum _{i=0}^{L-1} \mathbf{x}(kL+i)e(KL+i)\tag{3}h(k+1)=h(k)+μi=0L1x(kL+i)e(KL+i)(3)

3. 块长度的选择

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

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

  c. L>ML>ML>M,会产生自适应过程的冗余计算。

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

4. 参考文献

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

你可能感兴趣的:(信号处理,自适应滤波器,块LMS)