频域块最小均方自适应滤波方法与流程

文档序号:12828565阅读:407来源:国知局

本发明涉及一种自适应信号处理领域的频域块最小均方(fblms)自适应滤波算法。



背景技术:

自适应信号处理是信号处理领域的一个重要分支。经过数十年的发展,作为自适应信号处理基础的自适应滤波理论,已经广泛应用于通信系统、控制系统和其他各种系统中。在通信系统中,接收的信号会受到各种噪声的干扰,影响信号的传输质量,因此需要设计干扰消除的滤波器对信号进行滤波。在实际应用中,由于干扰信号的特性不易获知,大多数干扰也是时变的,甚至是非平稳的,因此,常规的滤波器无法达到滤除干扰的目的,而自适应滤波器能够跟踪干扰信号特性,自动调整自身的性能,较好地消除干扰。对于自适应干扰消除系统,将包含未知干扰的原始信号作为自适应滤波器的参考信号,而同一干扰源发出的干扰信号作为输入信号。通过自适应滤波器的权系数调整,使滤波器输出趋于干扰信号,再通过相减器消除干扰。自适应滤波在频域上的实现就是在频域上进行滤波器参数自适应调整。自适应过程一般采用典型lms自适应算法,但当滤波器的输入信号为有色随机过程时,特别是当输入信号为高度相关时,这种算法收敛速度要下降许多,这主要是因为输入信号的自相关矩阵特征值的分散程度加剧将导致算法收敛性能的恶化和稳态误差的增大。此时若采用变换域算法可以增加算法收敛速度。变换域算法的基本思想是:先对输入信号进行一次正交变换以去除或衰减其相关性,然后将变换后的信号加到自适应滤波器以实现滤波处理,从而改善相关矩阵的条件数。因为离散傅立叶变换dft本身具有近似正交性,加之有fft快速算法,故频域分块lms、fblms算法被广泛应用。fblms算法本质上是以频域来实现时域分块lms算法的,即将时域数据分组构成n个点的数据块,且在每块上滤波权系数保持不变。fblms算法在频域内可以用数字信号处理中的重叠保留法来实现,其计算量比时域法大为减少,也可以用重叠相加法来计算,但这种算法比重叠保留法需要较大的计算量。由于快速傅立叶变换fft以频域相乘代替时域卷积而使计算量降低。频域自适应算法是基于快速傅里叶变换(fft)和反快速傅里叶变换(ifft),旨在通过将输入信号变换到频率域之后针对其特点完成自适应滤波算法。

1959年,widrow和hoff等人在研究自适应线性元素的模式识别方案时,提出了著名的时域lms(leastmeansquare,最小均方)自适应滤波算法。时域lms自适应滤波算法基于梯度优化来确定系数,具有实现结构简单,计算量小,稳定性好等诸多优点。因此,在各种自适应滤波算法中,lms算法因为其简单、计算量小、稳定性好和易于实现而得到了广泛应用。然而时域lms自适应滤波算法也存在一些缺陷,当滤波抽头数较多时,将导致算法复杂度的明显增加。频域块lms算法可有效应用在长抽头系数个数的自适应滤波中,特别是针对具有稀疏特性的信号,可以明显减小运算量,降低复杂度。频域块lms算法是逐块的调整滤波器系数,其核心在于计算滤波器抽头系数和输入信号的线性卷积以及输入信号和误差信号的线性相关。如果长为n2的序列x(n)、h(n)长度相差较多,例如,h(n)为某滤波器的单位脉冲响应,长度有限,用来处理一个很长的输入信号x(n),或者处理一个连续不断的信号,按上述方法,h(n)要补许多零再进行计算,计算量有很大的浪费,或者根本不能实现。为了保持快速卷积法的优越性,可将x(n)分为许多段后处理,每小段的长与h(n)接近,其处理方法有两种:重叠相加法和重叠保留法。根据数字信号处理理论,快速傅里叶变换fft技术可为快速卷积和快速相关提供强有力的工具,并且可以采用重叠保留法和重叠相加法这两种方法,其中重叠保留法更为常用。块lms算法的核心在于计算滤波器抽头系数和输入信号的线性卷积以及输入信号和误差信号的线性相关。在使用fft算法计算快速卷积时,可采用重叠保留法,且当进行1/2重叠时,块的大小等于系数的个数,此时运算效率最高。即在m点滤波器抽头系数后补m个零,再进行n点fft,这里n=2m。

现有的频域块lms自适应滤波算法在计算快速卷积时所采用的重叠保留法为在m点滤波器抽头系数后补m个零,再进行2m点fft。该方法只适合最小相位系统,无法均衡非最小相位系统。其中,当线性时不变系统所有零点均位于单位圆内时为最小相位系统,反之则为非最小相位系统。



技术实现要素:

本发明的目的是针对上述现有技术存在的不足,通过改进现有的fblms算法,提供一种能够保证与时域lms算法有相同的收敛性,且有更低的计算复杂度,可以达到均衡非最小相位系统的能力的频域块最小均方自适应滤波方法,以解决传统fblms算法无法均衡非最小相位系统的问题。

本发明的上述目的可以通过以下措施来达到。一种频域块最小均方自适应滤波方法,其特征在于包括如下步骤:

首先将待滤波输入数据序列串并转换成长度为l的并行数据块,从相邻前后并行数据块分别级联m/2个数据,组成长度为n=l+m的级联输入数据块做快速傅里叶fft运算,得到n个频域输入数据,再将n个频域输入数据与n个滤波器权值系数一一相乘,再对n个滤波器滤波后的频域数据做n点傅立叶反变换ifft,得到n个滤波后的频域数据,将n个频域误差信号与n个频域输入数据的共轭一一相乘,并做ifft变换得到长度为n的时域梯度向量;用序列的循环卷积来计算线性卷积和线性相关,当前滤波器权值系数为上一时刻滤波器权值加上频域梯度向量与迭代步长之积作为更新滤波器权值系数,得到处理后的频域梯度向量。

本发明相比于现有技术的有益效果是:

1、能够保证与时域lms算法有相同的收敛性。本发明将待滤波的输入数据序列串并转换为长度为l的并行数据块,从相邻前后并行数据块分别级联m/2个数据,组成长度为n=l+m的级联输入数据块,并对级联输入数据块做快速傅里叶fft运算,得到n个频域输入数据,再将n个频域输入数据与n个滤波器权值系数一一相乘,再对n个滤波器滤波后的频域数据做n点进行傅立叶反变换ifft,得到n个滤波后的频域数据,舍弃时域数据两端的m/2个数据,保留并存储n个滤波后时域数据居中的数据;在计算快速卷积时,将现有技术所采用的重叠保留法改为在l点滤波器抽头系数前后各补m/2个零,再进行l+m点fft,其中当l=m时为1/2重叠,此时运算效率最高。提供了一种具有可以均衡非最小相位系统能力的频域块最小均方自适应滤波方法。

2、有更低的计算复杂度。本发明将n个频域误差信号与n个频域输入数据的共轭一一相乘,并做ifft变换到时域,得到长度e(k)作为n的时域梯度向量,用序列的循环卷积来计算线性卷积和线性相关,再将居中的m个时域梯度数据置为0,保留两端共l个数据,通过傅立叶反变换ifft到频域得到长度为n的频域梯度向量;然后删除部分数据,填充0,当前滤波器权值系数为上一时刻滤波器权值加上频域梯度向量与迭代步长之积作为更新滤波器权值系数进行自适应滤波器权值系数更新计算,得到处理后的频域梯度向量。频域块lms算法不仅保证了与时域lms算法有相同的收敛性,而且利用快速fft技术,用序列的循环卷积来计算线性卷积和线性相关,大大减少运算量。同时该算法不会造成误差积累,在用有效精度实现时,算法的实时性较好,可以保证滤波器持续不断地工作。

3、可以达到均衡非最小相位系统的能力。本发明对现有的fblms算法进行了改进,改变了滤波器抽头的补零方式,可以达到均衡非最小相位系统的能力。具体反映到实现结构上改变了以下模块:输入数据块级联方式、滤波结果有效数据输出方式、误差信号补0方式和梯度约束方式。在不增加实现复杂度的基础上,有效地解决了现有fblms算法无法均衡非最小相位系统的问题。

本发明同样可适应于最小相位系统。

附图说明

图1是本发明的频域块最小均方自适应滤波方法的实现框图。

下面结合附图和实施实例对本发明进一步说明。

具体实施方式

参阅图1。根据本发明,首先将待滤波的输入数据序列串并转换为长度为l的并行数据块,从相邻前后并行数据块分别级联的m/2个数据组成长度为n=l+m的级联输入数据块,并对级联输入数据块做快速傅里叶fft运算,得到n个频域输入数据,再将n个频域输入数据与n个滤波器权值系数一一相乘,再对n个滤波器滤波后的频域数据做n点进行傅立叶反变换ifft,得到n个滤波后的频域数据,舍弃时域数据两端的m/2个数据,保留并存储n个滤波后时域数据居中的数据;对于保留的居中数据,以均衡器抽头速率与信号速率的比值r进行等间隔抽取,输出第1个数、1+r个数、1+2r个数、……,得到l/r个有效输出数据y(n),将有效输出数据y(n)与期望数据e(n)相减得到l/r个误差信号,并以r为因子进行内插,即在e(n)每个误差信号两端每隔r插入r-1个0,得到长度为l的误差数据块,并在该误差数据块两端分别填充m/2个0,即在滤波器抽头系数前后各补m/2个零,再把得到长度为n=l+m的误差数据块做n点fft变换,得到n个频域误差信号;将n个频域误差信号与n个频域输入数据的共轭一一相乘,并做ifft变换到时域,得到长度e(k)作为n的时域梯度向量,用序列的循环卷积来计算线性卷积和线性相关,再将居中的m个时域梯度数据置为0,保留两端共l个数据,通过傅立叶反变换ifft到频域得到长度为n的频域梯度向量;然后删除部分数据,填充0,当前滤波器权值系数为上一时刻滤波器权值加上频域梯度向量与迭代步长之积作为更新滤波器权值系数进行自适应滤波器权值系数更新计算,得到处理后的频域梯度向量。

当r=1时,为整数间隔均衡器;当r>1时,为分数间隔均衡器。当l=m时为1/2重叠,

按如下步骤:

1)待滤波的输入数据序列串并转换,得到长度为l的并行数据块,并与相邻前后并行数据块分别级联m/2个数据,得到长度为n=l+m的级联输入数据块。

2)将步骤(1)得到的长度为n的级联输入数据块做fft变换,得到n个频域输入数据。

3)步骤(2)得到的n个频域输入数据与n个滤波器权值系数一一相乘,得到n个滤波后的频域数据。其中n个滤波器权值系数由下述步骤(5)、(6)、(7)得到。

4)对步骤(3)得到的滤波后的频域数据做n点ifft变换,得到n个滤波后的时域数据,保留居中的l个数据,舍弃两端共m个数据。对于保留的l个数据,以因子r进行抽取,得到l/r个有效输出数据,其中,r为均衡器抽头速率与信号速率的比值,当r=1时,为整数间隔均衡器;当r>1时,为分数间隔均衡器。

5)期望数据与步骤(4)中的有效输出数据做减法,得到l/r个误差信号。并以因子r进行内插,即在每个误差信号后面插入r-1个0,得到长度为l的数据块,然后在数据块两端分别填充m/2个0,得到长度为n=l+m的数据块,最后做n点fft变换,得到n个频域误差信号。其中期望数据由有效输出数据的判决结果产生,也可采用训练序列。

6)梯度向量处理:步骤(5)得到的n个频域误差信号与步骤(2)得到的n个频域输入数据的共轭一一相乘,并做ifft变换到时域,得到长度为n的时域梯度向量,再将居中的m个时域梯度数据置为0,保留两端共l个数据,最后通过fft变换到频域,得到长度为n的频域梯度向量。

7)更新滤波器权值系数。当前滤波器权值系数为上一时刻滤波器权值加上频域梯度向量与迭代步长之积。

假设待滤波的输入信号为x(n),经过串并转换后,假设第k个数据块为[x(kl),…,x(kl+l-1)]t,长度为l,并与相邻前后并行数据块分别级联m/2个数据,得到第k次滤波的级联输入数据块x(k):

其中,x表示长度为n=l+m的级联输入数据块,x(k)为第k次滤波的级联输入数据块,k为自然数,上标t表示向量或矩阵的转置。输入数据做fft变换到频域可以得到长度为n的频域输入数据x(k):

x(k)=diag{fx(k)}(2)

其中,diag{}表示将向量转化为对角阵,矩阵f为傅里叶变换矩阵

设第k次滤波的滤波器频域抽头系数为w(k),其中w(k)为n×1的列向量。则滤波器频域输出n×1维向量为

y(k)=x(k)w(k)(3)

变换到时域为

y1(k)=f-1y(k)(4)

则n×1维时域向量y1(k)为

y1(k)=[y1(k,1),y1(k,2),…,y1(k,n)]t

采用重叠保留法,去掉两端的无效数据,即有效滤波数据为

y2(k)=[y1(k,m/2+1),y1(k,m/2+2),…,y1(k,l+m/2)]t(5)

则l×1维时域向量y2(k)为

y2(k)=[y2(k,1),y2(k,2),…,y2(k,l)]t

最后,以r为间隔对y2(k)进行抽取,得到最终的滤波输出为

y(k)=[y2(k,1),y2(k,1+r),y2(k,1+2r),…]t(6)

其中,r为均衡器抽头速率与信号速率的比值。当r=1时,为整数间隔均衡器;当r>1时,为分数间隔均衡器。

在计算滤波器频域抽头系数为w(k)的过程中,首先根据输出信号y(k)计算误差信号,即

e(k)=d(k)-y(k)(7)

其中,d(k)为期望数据向量,可由y(k)硬判决得到。将(l/r)×1维时域向量e(k)记为

e(k)=[e(k,1),e(k,2),…,e(k,l/r)]t

接下来将(l/r)×1维时域误差信号通过插入0变换为n×1维频域误差信号,需要做以下几步处理:首先对误差信号e(k)每个数后插入r-1个0,变成长度为l的向量,然后在向量两端分别填充m/2个0,变成长度为n的向量,最后做n点fft变换,得到频域误差信号向量,即

由于在块lms算法中,时域梯度向量的计算是输入信号与误差信号的线性相关关系,故可利用fft变换进行快速相关运算。因此,当输入信号和误差信号变换到频域后,直接相乘,再做梯度约束,将与时域算法结果一致。时域梯度向量计算为

接下来做梯度约束。将n×1维时域梯度向量记为

并将中间m个数置为0,则约束后的频域梯度向量为

最后,进行第k+1次滤波的滤波器权值系数的更新:

w(k+1)=w(k)+μφ(k)(11)

其中,μ为迭代步长。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1