基于DSP的自适应滤波器设计综述Word格式.docx
《基于DSP的自适应滤波器设计综述Word格式.docx》由会员分享,可在线阅读,更多相关《基于DSP的自适应滤波器设计综述Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
归一化(NLMS)算法、变步长(SVSLMS)算法、递归最小二乘方格形(RLSL)算法等。
这些算法各有特点,适用于不同的场合。
所以,对发展通信业务有着不可或缺的作用的自适应滤波,更需要我们去学习与研究,并应用到实际应用中。
二.设计原理及程序分析
2.1数字滤波器的基本概念
从输入信号中滤出噪声和干扰以提取有用信息的过程称为滤波,相应的装置称为滤波器。
如果滤波器的输入和输出均为离散信号,称该滤波器为数字滤波器。
当滤波器的输出信号为输入端的线性函数时,该滤波器称为线性滤波器,否则就称为非线性滤波器。
一个典型的数字滤波器的框图如图2-1所示。
设输入信号为x(n),输出信号为y(n),该数字滤波器可用以下差分方程来表示:
(2-1)
式中
,
称为滤波器系数。
当
时,上式变为:
(2-2)
这种滤波器称为全零点滤波器。
如果
时,则称为全极点滤波器或递归滤波器。
由上式,可知数字滤波器的传递函数为:
(2-3)
其单位冲击响应函数为:
(2-4)
(2-5)
如果当n<
0时,有h(n)=0,这样的滤波器系统称之为因果系统。
如果冲激响应函数是有限长的,即
(2-6)
则称此滤波器为有限冲激响应FIR(FiniteImpulseResponse)滤波器,否则,称之为无限冲激响应IIR(InfiniteImpulseResponse)滤波器。
如果h(n)满足如下条件:
则称此滤波器是因果的,并且是稳定的。
2.2自适应滤波器原理
所谓的自适应滤波,就是利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。
自适应滤波器实质上就是一种能调节其自身传输特性以达到最优的维纳滤波器。
自适应滤波器不需要关于输入信号的先验知识,计算量小,特别适用于实时处理。
由于无法预先知道信号和噪声的特性或者它们是随时间变化的,仅仅用FIR和II种具有固定滤波系数的滤波器无法实现最优滤波。
在这种情况下,必须设计自适应滤波器,以跟踪信号和噪声的变化。
自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。
一般而言,自适应滤波器由两部分组成,一是滤波器结构,二是调整滤波器系数的自适应算法。
自适应滤波器的结构采用FIR或IIR结构均可,由于IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应滤波器的结构。
图2.2示出了自适应滤波器的一般结构。
图2.2为自适应滤波器结构的一般形式,图中x(k)输入信号,通过权系数可调的数字滤波器后产生输出信号y(k),将输出信号y(k)与标准信号(又称期望信号)d(k)进行比较,得到误差信号e(k)。
e(k)和x(k)通过自适应算法对滤波器的权系数进行调整,调整
图2.2自适应滤波器结构的一般形式
图2.3自适应滤波器的系统识别框图
的目的使得误差信号e(k)最小。
重复上面过程,滤波器在自己的工作过程中逐渐了解到输入信号和噪声的统计规律,并以此为根据自动调整滤波器权系数,从而达到最佳的滤波效果。
一旦输入的统计规律发生了变化,滤波器能够自动跟踪输入信号变化,自动调整滤波器的权系数,最终达到滤波效果,实现自适应过程。
图2-3是使用自适应滤波器的系统识别原理图。
自适应滤波器的结构可以采用FIR或IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应滤波器的结构。
自适应FIR滤波器结构又可分为3种结构类型:
横向型结构(TransversalStructure)、对称横向型结构(SymmetricTransversalStructure)以及格型结构(LatticeStruture)。
本文采用自适应滤波器设计中最常用的FIR横向型结构。
2.3自适应滤波算法
2.3.1最小均方算法(LMS)算法
由Widrow和Hoff引入的最小均方(LMS)算法,由于其简单性、运算高效性各种运行条件下良好的性能,而被广泛应用。
基于梯度的最小均方(LMS)算法是最基本的算法,其含义相对简单明了。
选定均方误差为权矢量二次函数时,性能度量曲线可以形象地看成一个碗形曲面这样自适应处理器的任务便是不断地向最低点逼近,即可以通过计算梯度的方法实现性能度量的最优化。
而基于梯度的算法中,最简单的一种就是最小均方算法LMS算法,LMS算法使用的准则是使均衡器的期望输出值和实际输出值之间的均方误差(MSE)最小化的准则,依据输入信号在迭代过程中估计梯度矢量,并更新权系数以达到最优的自适应迭代算法。
这算法不需要计算相应的相关函数,也不需要进行矩阵运算。
自适应滤波器最普通的应用就是横向结构。
滤波器的输出信号y(n)是y(n)
(2-7)
T表示转置矩阵,n是时间指针,N是滤波器次数。
这个例子就是有限脉冲响应滤波器的形式,为x(n)和w(n)两个矩阵卷积。
这种自适应算法使用误差信号
(2-8)
为了方便起见,将上述式子表示为向量形式,则上述式子表示为:
(2-9)
误差序列可写为
(2-10)
其中d(n)是期望信号,y(n)是滤波器的输出。
使用输入向量x(n)和e(n)来更新自适应滤波器的最小化标准的相关系数。
显然,自适应滤波器控制机理是用误差序列e(n)按照某种准则和算法对其系数{wi(n)},i=1,2,…,N进行调节的,最终使自适应滤波的目标(代价)函数最小化,达到最佳滤波状态。
本节所用的标准是最小均方误差(MSE)。
(2-11)
E[]表示算子期望。
假如公式中的y(n)被公式(3.3)取代,公式(3.5)就可以表
示为
(2-12)
是
自相关矩阵,是输入信号的自相关矩阵。
互相关向量,也指出了期望信号d(n)和输入信号向量x(n)的相互关矢量。
由式(2-12)可见,自适应滤波器的代价函数是延迟线抽头系数的二次函数。
当矩阵R和矢量P己知时,可以由权系数矢量w直接求其解。
最优解
最小化MSE,源自解这个公式
(2-13)
将式(2-12)对w求其偏导数,并令其等于零,假设矩阵R满秩(非奇异),
可得代价函数最小的最佳滤波系数
(2-14)
这个解称为维纳解,即最佳滤波系数值。
因为均方误差(MSE)函数是滤波系数w的二次方程,由此形成一个多维的超抛物面,这好像一个碗状曲面又具有唯一的碗底最小点,通常称之为自适应滤波器的误差性能曲面。
当滤波器工作在平稳随机过程的环境下,这个误差性能曲面就具有固定边缘的恒定形状。
自适应滤波系数的起始值{wi(0)},i=1,2,…,N是任意值,位于误差性能曲面上某一点,经过自适应调节过程,使对应于滤
波系数变化的点移动,朝碗底最小点方向移动,最终到达碗底最小点,实现了最佳维纳滤波。
自适应过程是在梯度矢量的负方向接连的校正滤波系数的,即在误差性能曲面的最陡下降法方向移动和逐步校正滤波系数,最终到达均方误差为最小的碗底最小点,获得最佳滤波或准最优工作状态。
广泛使用的LMS算法是一种选择性法适应采样和采样基础。
这个方法可以避免复杂的计算。
LMS算法是最陡下降法,在这个算法中,向量w(n+1)通过改变对最小均方误差性能的负梯度比例自适应滤波算法及应用研究来增强。
对于LMS算法梯度v(n)通过假设平方误差。
2(n)作为公式2-13的MSE来预测。
因此,梯度预测可以单一化表示为:
(2-15)
在实际应用中,2u经常用来代替u。
瞬间梯度预测产生的Widrow一HoffLMS算法,w(n)为自适应滤波器在n时刻的滤波系数或权矢量。
按照最陡下降法调节滤波系数,则在n+1时刻的滤波系数或权矢量w(n+l)可以用下列简单递归关系来计算:
(2-16)
u是自适应步长来控制稳定性和收敛率。
这种瞬时估计是无偏的,因为它的期望值E[]等于最陡下降法的梯度矢量。
以任意初始向量w(0)来开始,向量w(n)集中在最佳解决方法
,假如选择u
(2-17)
为矩阵R的最大特征值,受限制于
(2-18)
Tr[.]为指示矩阵的轨迹,
是平均输入功率。
对于自适应信号处理应用,最重要的实际考虑是收敛速度,决定滤波器跟踪不稳定型号的能力。
总体来说,权向量要获得收敛只有当最缓慢的权集中一点。
这个最慢的时间
(2-19)
这个指出时间连续相反的以u的比例收敛,并且依靠输入矩阵的自相关特征值。
具有全异的特征值,规定时间是受最慢模式的限制。
以梯度预测为基础的自适应导致噪声矩阵的权向量,因此会有性能的损失。
这个自适应处理的噪声导致稳态权向量随意的改变为最适宜的权向量。
稳态权向量的精度通过超额的最小均方误差来测量。
这个LMS算法超过EMS的是
(2-20)
是MSE在稳态的最小值。
公式(2-19)和(2-20)产生LMS算法基本协定:
为了在稳态获得高精度(低超自适应滤波算法及应用研究额MSE),需要u的最小值,但是也会降低收敛率。
后面会有进一步关于LMS算法特征的讨论。
对于N维更新u*e(n)是常数,误差信号e(n)乘以u得到u*e(n)。
这个常数首先计算,然后乘以x(n)来更新w(n)。
自适应LMS算法如同最陡下降法,利用时间n=0的滤波系数矢量为任意的起始值w(0),然后开始LMS算法的计算,其步骤如下:
l)由现在时刻n的滤波器滤波系数矢量估值w(n),输入信号矢量x(n)及期望信
号d(n),计算误差信号e(n):
(2-21)
2)利用递归法计算滤波系数矢量的更新估值。
3)将时间指数n增加1,回到第一步骤,重复上述计算步骤,一直到达稳定状态为止。
由此可见,自适应LMS算法简单,它既不需要计算输入信号的相关函数,又不要求矩阵之逆。
因而得到了广泛的应用。
2.3.2递推最小二乘法(RLS)算法
从2.1节的分析得知,LMS算法的收敛速度很慢,为了得到较块的收敛速度,有必要设计包含附加参数的更复杂的算法。
特别是,如果矩阵R是N×
N的且特征值为
,则可以使用一种含有N个参数的算法,其中每个参数对应一个特征值。
在快速收敛算法的推导中,我们将采用最小二乘法。
因此,将直接处理接收数据,使二次性能指数最小,而以前是使平方误差的期望值最小。
这意味着,用时间平均而不是统计平均来表示性能指数。
基于时间平均的最小平方误差被定义如下:
(2-22)
式中,λ是接近1,但是小于1的加权因子,e*(i,n)是e(i,n)的复共轭,且误差e(i,n)为:
(2-23)
且
(2-24)
式中,x(i)是i时刻的输入数据向量,w(n)是n时刻的新的抽头增益向量。
因而e(i,n)是用n时刻的抽头增益向量测试i时刻的旧数据所得的误差,J(n)是在所有旧数据上用新抽头增益所得的累计平方误差。
要完成RLS算法就要找到均衡器的抽头增益向量w(n),使得累计平方误差J(n)最小。
为了测试新的抽头增益向量,会用到那些先前的数据。
而因子λ会在计算时更依赖于新近的数据,也就是说,J(n)会丢掉非稳定环境中的较旧的数据。
如果信道是稳定的,那么λ可以设为1。
为了获得J(n)的最小值,可使J(n)的梯度为0,即
,通过运算可知:
(2-25)
式中,
是RLS均衡其的最佳抽头增益向量。
(2-26)
(2-27)
式(2-26)中的方阵R(n)是输入数据向量x(i)的确定相关矩阵,式(2-26)中向量P(n)是输入向量x(i)和期望输出d(i)之间的确定互相关矩阵。
要用式(2-25)计算均衡器的抽头增益向量
,就需要计算
。
从式(2-26)中R(n)的定义可知,我们可以得到关于R(n-1)的递归公式。
(2-28)
由于式(2-28)中的三项都是N×
N的方阵,我们可以使用方程倒数的引理得到
递归公式:
(2-29)
(2-30)
根据上述递归公式,可知:
(2-31)
(2-32)
初始化:
是一个正常数
计算:
对于n=1,2…,计算
λ是一个可以改变均衡器性能的抽头系数。
如果信道是非时变的,那么λ可
以设为1。
而通常的λ取值为0.8<
λ<
1。
λ值对收敛速率没有影响,但是它影响
着RLS算法的跟踪能力。
λ值越小,均衡器的跟踪能力更强。
但是,如果λ值太小,均衡器将会不稳定。
2.4基于DSP实现自适应滤波器
2.4.1自适应滤波算法的DSP实现
为了提高LMS算法的处理速度及减小系统的硬件规模,在实现滤波器算法时,采用了TMS320C54xx作为核心芯片。
由于该处理器采用改进型结构,具有高度并行性,同时拥有高度集成的指令系统,简化编程过程,模块化结构程序设计增强了程序的可移植性。
利用TMS320C54xx实现LMS自适应算法时,存储器中数据的存放形式对DSP的有效运用有着特殊的意义,合理的存放形式,可以使算法实现起来更加快速和高效,为了实现算法中输入样值x(n)和滤波器系数W(n)的对应项相乘,他们在存储器中的存放形式如图2.4所示。
图2.4TMS320C54xx自适应滤波器存储器组织形式
实验中采用的自适应滤波器采用16阶FIR滤波器,采用相同的信号作为参考d(n)和输入信号x(n),并采用上一时刻的误差值来修正本时刻的滤波器系数,2μ取值0.0005,对滤波器输出除128进行幅度限制。
程序设计的整个实现过程主要分为3个步:
(1)滤波运算前的相关运算单元、寄存器以及变量的初始化;
原始信号xx[i]=256*sin(i*2*PI/34);
(2)根据输入的采样值计算滤波器的输出并求出误差;
这一步是最重要的滤波计算,我们用FIRLMS(int*nx,float*nh,intnError,intnCoeffNumber)这个函数来实现。
其完整代码是
intFIRLMS(int*nx,float*nh,intnError,intnCoeffNumber)
inti,r;
floatfWork;
r=0;
for(i=0;
i<
nCoeffNumber;
i++)
{
fWork=nx[i]*nError*fU;
nh[i]+=fWork;
r+=(nx[i-i]*nh[i]);
}
r/=128;
returnr;
}
{
收敛因子fU=0.0005。
nError是上一次的误差值,fWork是当前的滤波器权系数,输出值r。
这里实现自适应算法中
的公式。
输出值y(n)等于输入值x(n-1)*w(i)的积分。
½
(3)根据LMS算法的迭代公式更新滤波器参数,有新的采样输入后转到第二步循环执行。
把一信号进行采样。
把采样点放在数字中。
这里用到了输入信号数组xx[],输出信号数组rr[],误差数组wc[],以及滤波器权系数h[]。
通过for循环语句进行一个一个样点值滤波计算。
得到想要的结果。
for(i=COEFFNUMBER+1;
INPUTNUMBER;
nLastOutput=FIRLMS(xx+i,h,nLastOutput-xx[i-1],COEFFNUMBER);
rr[i]=nLastOutput;
wc[i]=rr[i]-xx[i];
用FIRLMS函数得到了一个滤波后的样点信号值nLastOutput存放在输出信号数组rr[]中。
for循环一个一个得到滤波过的信号值第INPUTNUMBER=1024个为止。
根据算法和DSP程序,在CCS环境下编译,连接生成公共目标代码文件,在线下载到DSP中运行。
为了能观察到相应的波形,在CCS环境下选择View\Graph\Time\Freqency进入图形观察窗口,在“GraphPropertyDialog”窗口中选定相应类型的值。
将编译产生的可执行文件下载到DSP芯片中,经过运行得到图4.5输入波形、图4.6滤波后输出信号波形与图2.7自适应误差e(n)波形
图2.5输出信号原始波形
图2.6滤波后输出信号的波形
图2.7自适应误差e(n)波形
三.设计步骤
1.查找有关自适应滤波器资料,从而了解自适应滤波器原理以及与其他滤波器区别。
2.查找与自适应滤波器与DSP实现资料,从中学习DSP实验自适应滤波器方法。
3.学习LMS算法。
4.根据LMS算法编写DSP程序,调试并下载到DSP芯片中,在CCS环境下编译,连接生成公共目标代码文件,在线下载到DSP中运行,并观察相应的波形。
5.记录所编写代码,撰写课程设计。
四.设计心得
通过此次课程设计,使我了解到自适应滤波器在统计信号处理的中的重要性,了解到在实际应用中,由于没有充足的信息来设计固定系数的数字滤波器,或者设计规则会在滤波器正常运行时改变,自适应滤波器所能发挥的关键作用。
并且在设计过程中,我学会到自适应滤波器设计原理以及最小均方(LMS)算法、递归最小二乘(RLS)算法等自适应算法,同时初步认识到DSP芯片在数字信号处理方面巨大的优势,这对我今后的学习与工作有很深远的影响。
五.参考文献
[1]邹彦等.DSP原理及应用.北京.电子工业出版社,2008.
[2]赵洪亮等.TMS320C55xDSP应用系统设计.北京:
北京航空航天大学出版社,2008.
[3]张志勇.精通MATLAB6.5[M].北京:
北京航空航天大学出版社,2003
[4]西蒙赫金.自适应滤波器原理.北京:
电子工业出版社,2003
[5]何振亚.自适应信号处理.北京:
科学出版社,2002
/******************************************************************************
Main()主函数。
******************************************************************************/
/////////////////////////////////////////////////
//ExampleForICETEK-VC5416-EDU//
//CTRVersion:
V4//
//Filename:
FirLms.c//
//Project:
FirLms.pjt//
//Version:
2.00//
//Writeby:
DanielHawk//
//Company:
RealtimedspCo.Ltd.//
////
//AllRightsopened&
noOnus2005.06//
#include"
math.h"
#definePI3.1415926
#defineCOEFFNUMBER16
#defineINPUTNUMBER1024
intFIRLMS(int*nx,float*nh,intnError,intnCoeffNumber);
floath[COEFFNUMBER],fU;
intxx[INPUTNUMBER],rr[INPUTNUMBER],wc[INPUTNUMBER];
main()
inti,nLastOutput;
nLastOutput=0;
fU=0.0005;
COEFFNUMBER;
i++)h[i]=0;
xx[i]=256*sin(i*2*PI/34);
rr[i]=wc[i]=0;
for(i=COEFFNUMBER+1;
//breakpoint
exit(0);
func.