FLMS算法的Matlab设计与仿真

2012-10-18 02:52张立萍
赤峰学院学报·自然科学版 2012年21期
关键词:频域权值乘法

张立萍

(赤峰学院 物理与电子信息工程学院,内蒙古 赤峰 024000)

FLMS算法的Matlab设计与仿真

张立萍

(赤峰学院 物理与电子信息工程学院,内蒙古 赤峰 024000)

自适应滤波技术已经被广泛应用于数字通信、雷达和工业控制等领域.本文以随机干扰噪声信号作为研究对象,利用Matlab工具设计了FLMS去噪自适应滤波器的程序,并进行了仿真,为硬件实现提供了有力的参考.

自适应滤波器;LMS算法;FLMS算法

1 快速块FLMS算法简介

LMS算法是用均方误差来做为性能指标,也就是使滤波器的期望输出值和实际输出值之间的均方误差(Mean Squared Errer,MSE)达到最小.

设自适应滤波器的输入矢量为:

加权矢量(即滤波器参数矢量)为:

滤波器的输出为:

误差信号e(n)定义为期望输出d(n)与滤波器实际输出之间的误差,即

W(n)是常数矢量的情况下,其均方误差可表示为

权矢量递推公式,即LMS算法递推公式为:

虽然LMS算法计算简单,但是收敛速度慢.为了克服LMS算法收敛缓慢的问题,实现具有长记忆功能的自适应FIR滤波器,提出了块LMS处理算法,就是将L个权系数构成一块.在处理每个块时,令各权值保持不变,而每个块处理完后权值才改变.设第k块处理期间自适应滤波器的输出为

其中,W(k)=[w0(k),w1(k),…,wL-1(k)T为第k块处理期间的时域权矢量,其各元素wl(k)(l=0,1,…,L-1)保持为常数.第k块处理后,权矢量调整的迭代公式为

式中ø(k)向量是互相关的.

通过数字信号处理理论可知:快速傅立叶变换(即FFT算法)是实现卷积和相关的快速运算,实现FFT可以采用重叠保留法和重叠相加法,其中重叠保留法较为常用.尽管重叠保留法的重叠部分长度可为任意值,但是运算效率最高的是1/2重叠(即块的大小等于系数的个数).快速LMS(即FLMS)算法是时域块处理LMS(BLMS)算法在频域的快速实现.下面将式(2)的输出改写成滤波器输入与权系数的线性卷积公式如下:

式(4)线性卷积可通过重叠保留法,用FFT实现.由于1/2的数据重叠是最有效的,即在M(M=L)点滤波器抽头系数后补M个零,再进行N点的FFT,这里N=2M,即:

令X(k)为第k-1块与第k块输入经2M点FFT后所构成的对角阵,即:

这样,式(4)线性卷积的频域实现如下式,它为第 块的滤波输出值,是 维向量:

因为最前面的M个元素进行循环卷积,式中只需保留最后M个元素即可.

下面考虑式(3)中ø(k)的线性相关.对于第k块,定义M'1期望响应向量:

及相应的M'1误差信号向量:

如果注意到,在式(7)所述线性卷积实现中,开始的M个元素已从输出中废弃掉,则可将误差信号e(k)向量变换到频域,得

由于线性相关实际上是与线性卷积相似的一种运算形式,因此可将重叠存储方法用于矢量ø(k)中,则ø(k)可用IFFT计算如下:

最后,频域权矢量调整的迭代公式为:

公式(6)、(7)、(8)、(9)、(10)就是 FLMS 自适应滤波算法,其信号流图如图1所示.实际上FLMS算法是一种变换到频域的快速算法,它与块LMS算法有相同的收敛特性,而FLMS算法的收敛速率可以在不影响最小均方误差条件下,通过调节每个可调权值的步长来进行调节和改善.

图1 FLMS算法的信号流图

2 FLMS算法的Matlab设计与仿真

本文利用MATLAB工具箱编写.M文件FLMS.m对快速块LMS算法进行设计,并利用绘图函数得到仿真波形,从而验证算法的可行性.其中,各参数代表的含义如下:

FLMS算法中权向量{w}的更新表达式在M文件中的实现代码为:

仿真时,正弦信号为sin(0.01*Pi*t),其中t=1:dian,加入标准白噪声信号作为干扰信号,在Matlab中运行FLMS.m文件,得到快速块LMS算法的仿真结果如图2.

图2 FLMS算法的输入和输出曲线

3 结束语

下面将快速块LMS(即FLMS)算法与传统LMS算法的计算复杂性进行比较.由于滤波器的实现快慢主要取决于乘法的次数,下面以块长度为N时两种算法需要的总乘法次数进行比较.具有N个抽头权值(实数)的传统LMS算法,每计算一个输出需要N次乘法,同时更新一次权值需要N次乘法,所以每次迭代共要2N次乘法,而对于滤波器的N个输出值,共需要2N2次乘法.现在分析FLMS算法所需的乘法次数:每个M(M=2N)点快速傅立叶变换(即FFT)需要约Mlog2M次乘法运算,如果要执行5次频率变换,共要计算5Mlog2M次乘法,计算频域输出需要4M次乘法,而且计算互相关(与梯度向量估计有关)运算也需要4M次乘法,快速块LMS算法总共需要的乘法次数为

5Mlog2M+8M=10Nlog2(2N)+16N=10Nlog2N+26N

如果取抽头值为1024,传统LMS算法所需乘法次数大概是200万次,快速块LMS算法所需乘法次数大概为12.6万次,计算速度快了15倍左右.

〔1〕杜培宇.基于自适应滤波器的噪声抑制技术研究[D].硕士学位论文.山东大学,2005.

〔2〕黄埔堪,陈建文,楼生强.现代数字信号处理[M].北京:电子工业出版社,2003.

〔3〕沈福民.自适应信号处理[M].西安:西安电子科技大学出版社,2001.

〔4〕王建中,罗欣武,刘文江,等.一种改进的DMT系统频域均衡器[J].计算机工程与应用,2006(24):98-101.

〔5〕齐海兵.基于FPGA的横向LMS算法的实现[J].国外电子元器件,2007(1):31-34.

TN91

A

1673-260X(2012)11-0038-02

猜你喜欢
频域权值乘法
大型起重船在规则波中的频域响应分析
算乘法
一种融合时间权值和用户行为序列的电影推荐模型
我们一起来学习“乘法的初步认识”
CONTENTS
《整式的乘法与因式分解》巩固练习
把加法变成乘法
频域稀疏毫米波人体安检成像处理和快速成像稀疏阵列设计
基于权值动量的RBM加速学习算法研究
基于多维度特征权值动态更新的用户推荐模型研究