导航:首页 > 源码编译 > 自适应滤波算法c

自适应滤波算法c

发布时间:2022-12-18 18:11:46

⑴ 急求:自适应滤波器LMS算法代码

自适应过程一般采用典型LMS自适应算法,但当滤波器的输入信号为有色随机过程时,特别是当输入信号为高度相关时,这种算法收敛速度要下降许多,这主要是因为输入信号的自相关矩阵特征值的分散程度加剧将导致算法收敛性能的恶化和稳态误差的增大。此时若采用变换域算法可以增加算法收敛速度。变换域算法的基本思想是:先对输入信号进行一次正交变换以去除或衰减其相关性,然后将变换后的信号加到自适应滤波器以实现滤波处理,从而改善相关矩阵的条件数。因为离散傅立叶变换�DFT本身具有近似正交性,加之有FFT快速算法,故频域分块LMS�FBLMS算法被广泛应用。

FBLMS算法本质上是以频域来实现时域分块LMS算法的,即将时域数据分组构成N个点的数据块,且在每块上滤波权系数保持不变。其原理框图如图2所示。FBLMS算法在频域内可以用数字信号处理中的重叠保留法来实现,其计算量比时域法大为减少,也可以用重叠相加法来计算,但这种算法比重叠保留法需要较大的计算量。块数据的任何重叠比例都是可行的,但以50%的重叠计算效率为最高。对FBLMS算法和典型LMS算法的运算量做了比较,并从理论上讨论了两个算法中乘法部分的运算量。本文从实际工程出发,详细分析了两个算法中乘法和加法的总运算量,其结果为:

复杂度之比=FBLMS实数乘加次数/LMS实数乘加次数=(25Nlog2N+2N-4)/[2N(2N-1)]�

采用ADSP的C语言来实现FBLMS算法的程序如下:

for(i=0;i<=30;i++)

{for(j=0;j<=n-1;j++)

{in[j]=input[i×N+j;]

rfft(in,tin,nf,wfft,wst,n);

rfft(w,tw,wf,wfft,wst,n);

cvecvmlt(inf,wf,inw,n);

ifft(inw,t,O,wfft,wst,n);

for(j=0,j<=N-1;j++)

{y[i×N+j]=O[N+j].re;

e[i×N+j]=refere[i×N+j]-y[i×N+j];

temp[N+j]=e[i×N+j;}

rfft(temp,t,E,wfft,wst,n);

for(j=0;j<=n-1;j++)

{inf_conj[j]=conjf(inf[j]);}��

cvecvmlt(E,inf_conj,Ein,n);

ifft(Ein,t,Ein,wfft,wst,n);

for(j=0;j<=N-1;j++)

{OO[j]=Ein[j].re;

w[j]=w[j]+2*u*OO[j];}��

}

在EZ-KIT测试板中,笔者用汇编语言和C语言程序分别测试了典型LMS算法的运行速度,并与FBLMS算法的C语言运行速度进行了比较,表2所列是其比较结果,从表2可以看出滤波器阶数为64时,即使是用C语言编写的FBLMS算法也比用汇编编写的LMS算法速度快20%以上,如果滤波器的阶数更大,则速度会提高更多。

⑵ 为什么自适应滤波算法发散不收敛

要提自适应滤波器,首先就得知道什么是最优滤波器.
最优滤波器就是某种准则(通常是最小均方误差)下,性能最优的滤波器.
而实际中,由于系统环境是时变的,以及直接计算最优滤波器往往计算量较大,实时处理可能存在困难,所以可以让滤波器从某个初始状态出发,按照设定的规则,依据观测到的系统输入和输出,调整滤波器,使其不断逼近当前的最优滤波器.这个逼近的过程就是收敛的过程.
自适应滤波器的瞬态性能分析很复杂,特别是对于系统也可能时变的情况.现在理论也往往只是定性分析.如何实现“好”的自适应滤波器,往往取决于目标应用的特点.也就是说,没有最好的,只有最合适的.
你引用的这段文字,一看就是些APA算法的文章.LMS和RLS是计算复杂度和收敛速度的两极,APA介于两者之间,此话不假.但是凭此说哪个好实在是没有意义的事情.要具体应用问题,具体分析.

⑶ 用Matlab软件实现变长NLMS自适应滤波器算法

一种具有双瞬变因子的LMS自适应滤波算法

曾召华 刘贵忠 马社祥

(西安交通大学信息与通信工程研究所 西安710049)

作者在文献〔4〕中提出了一种改进的瞬变步长SPLMS自适应滤波算法。本文在SPLMS算法的基础上,进一步提出一种基于瞬变步长、瞬变平滑因子的双瞬变SPLMS算法—DSPLMS算法。该算法除具有常规LMS算法简单的优点外,还具有更高的起始收敛速率、更小的权失调噪声和更大的抑噪能力。文中重点讨论瞬变步长、瞬变平滑因子的变化特性。计算机仿真结果支持了理论分析。
自适应滤波器,失调噪声,收敛速度,最小均方误差,瞬变因子
1 引言
自适应滤波器及其相应算法是多年来人们广泛研究的课题。基于Widrow-Hoff标准的LMS算法和其相应的自适应滤波器以其算法和结构简单,便于实时信号处理等优点,在不同领域得到了最为广泛的应用。而为克服常规的固定步长LMS或牛顿LMS(Newton LMS,即NLMS)自适应算法在收敛速率、跟踪速率与权失调噪声之间要求上存在的较大矛盾,人们发展了各种各样的改进型LMS算法,如基于瞬变步长LMS自适应滤波算法〔1~6〕、基于正交变换(DCT、FFT、小波变换、子带滤波)的新型LMS均衡算法〔7~8〕。基于模糊判断的自适应LMS系统识别和基于最小四次均方误差的LMS自适应平稳收敛算法〔9~10〕。在所有改进型LMS算法中,瞬变步长LMS自适应滤波算法是研究最为广泛的一类LMS自适应滤波算法。本文算法也是基于瞬变因子的一种改进LMS自适应滤波算法。
2 SPLMS算法分析及问题的提出
在文献〔4〕中,作者对上述方案进行了大量的计算机仿真和理论分析,结果表明:(1)上述诸种算法的收敛速率与系统输入信噪比SNR直接相关,信噪比SNR越高,它们的收敛速率普遍提高;随着信噪比SNR的降低,它们的收敛速率减慢,甚至出现发散现象,因此它们必须在弱干扰下完成规一化起动,即在起始过程中噪声要相当小,否则效果不佳。(2)在上述所有算法中,由于采用瞬时平方误差性能函数e2k来代替均方误差性能函数,所以其算法的权值收敛过程表现为加权矢量的平均值变化规律和由于噪声引起的随机起伏项的叠加。因此,噪声方差越大,则随机起伏项越大,表现为权值振动也就越大。(3)为了追求更快的收敛性,往往增大μ和M,但滤波器阶数越高,步长因子μ和输入功率越大,就便得失调系数也越大。在有限次数起动迭代过程中,也就很难收敛到较稳态值,所以必须寻求更佳的瞬态步长算法。
文献〔4〕在准最小均方(Pseudo-LMS,即PLMS)误差算法基础上通过采用滑动时间窗,减少PLMS算法起动过程的计算量;同时在权值迭代中加一平滑迭代而使PLMS算法具备全局较强的抗噪性能,较快速收敛性能而提出了SPLMS算法,即:

其中rk为M阶滤波器输入信号的功率估值;Wk为滤波器的第k步M维最优权矢量估值;Xk是滤波器输入信号的M维输入数据矢量;dk为希望输出;μk为滤波器第k步瞬态步长。切换条件中,阈值μ类似于LMS算法的步长因子μL,满足:

μL<μ<1/trR,R=E〔XkXTk〕(7)

为待定的算法常数,是μk变化的动态平衡点。而α是一常数为平滑因子,它决定上一次的权值变化对本次权值更新的影响程度。k0是采用式(2)规一化启动后,算法收敛到较稳态时的步数。式(4)是μk下降的递推算法,式(5)是μk上升的平滑递推算法。λ为上升的速度因子,满足0<λ<1。在实际应用中,考虑到学习过程的启动速度,一般取较大的λ值,即:

0.9<λ<1,k0=25~35,|α|<0.3(8)

SPLMS算法的实质是:在开始k0步中,采用启动速度较快的MLMS(Mend LMS)算法收敛到相对较稳态的状态;然后在k≥k0+1过程中,采用瞬态步长μk来训练算法。而μk根据不同的切换条件将围绕μ作升降变化,其迭代计算主要表现为不降即升的动态过程。α主要根据经验来取值,输入数据的非平稳性越大,噪声方差越大时,增大α可明显抑制振动,从而加速收敛过程;在噪声小时减小α。
但SPLMS算法也有一明显不足,即α主要根据经验来取值,没有理论上的确切依据。α取值不当,反而容易造成算法收敛性能更差,甚至发散的现象。从理论上分析,α与瞬态步长μk和输出误差ek(文中定义为:ek=dk-WTk Xk)应有一定关系。在算法启动阶段,ek较大,为追求启动速度而常取较大步长μk,但μk越大,权失调系数也就越大,有时反而起不到应有的作用,这时就应相应增加α值来平滑权失调噪声;在算法渐趋稳定,步长μk渐趋于常数,ek渐趋于0,此时α也应渐趋于0。综合起来就是:α应随步长μk和误差ek瞬时变化而变化,也应是一瞬变因子。本文重点就是寻求瞬变因子αk的数学表达式以满足上述分析的要求。
3 改进的双瞬变因子SPLMS算法——DSPLMS算法
3.1 μk的变化特性
从式(4)和式(5)可以看出,在k≥k0+1过程中,μk根据不同的切换条件将围绕μ作升降变化,μk的迭 代计算主要表现为不降即升的动态过程。对于式(5),设k≥kr时,μk<μ,则在k≥kr>k0+1的上升过程中:

即上升速度按指数衰减,使趋于平衡点μ的上升速度迅速减小。其变化过程类似于一电阻电容串联电路上电容的充电过程。对式(4),由于μk=μk-1/(1+Rk),Rk>0,即使很小的Rk经过一步迭代就足以使μk<μ,再次切换到上升过程。当rk较大时,下降形成的负脉冲也较大。
综上所述,在k≥k0+1的收敛过程中,μk的时变特性等价于幅值极不对称的随机正负尖脉冲序列组成的瞬态分量和直流分量μ的线性叠加。瞬态分量的负脉冲强度与rk瞬值对应,有利于抑制局部自激或短暂发散,减小权矢量噪声,提高稳定度。在rk较小、算法渐趋于稳定时,瞬变分量趋于0,μk~μ。
3.2 αk的变化特性
定义:ΔWk=Wk+1-Wk为自适应滤波器的权系数增量;ξ为均方误差性能函数,ξ=E〔ek〕2,ek=dk-WTk Xk为输出误差,则SPLMS算法的权系数更新公式由式(1)可重写为:

Wk+1=Wk-μk^Wξk+αΔWk-1(10)

其中Wξ为ξ的梯度函数,^W为Wξ的第k步估计。由式(10)的系数更新公式,我们可写出均方误差性能函数的表达式:

式中上标T表示矢量的转置。若用一矢量^Wζk+1去左乘式(10),则可得到:
^Wξk+1Wk+1=^Wζk+1Wk-μk^Wζk+1^Wζk+^Wζk+1αΔWk-1(13)

利用式(12)的结论,可将式(13)化简为:

^TWζk+1ΔWk=0(14)

由于参量μk和α均为实的标量因子,故式(14)又可写成:

(μk^TWζk+1)(αΔWk)=0(15)

式(15)清楚地表明:在SPLMS算法中,自适应滤波器的权系数在迭代过程中,其均方误差性能函数的梯度估值与权系数增量始终存在一个正交关系。ΔWk-1对ΔWk的调节作用是在当前梯度估值方向上,给出与梯度估值方向正交矢量,并以这两个矢量所构成的合矢量来改变权系数空间的权重。
对于FIR结构的LMS自适应系统而言,其均方误差性能函数在平稳输入时为一个二次型函数,在收敛点附近仍可视为一个二次型函数,故有:

ξ(Wk+1)=WTk RWk-2WTk P+C(16)

式中R=E〔XTk Xk〕为输入信号的自相关矩阵,P=E〔dkXk〕为所需信号与输入信号的互相关矢量,C=E〔d2k〕,则由式(16)可得:

将式(17)代入式(18),则式(18)可变形为:

式(19)就是本文给出的瞬变平滑因子αk的数学表达式。显然,它满足前面分析时所提出的要求,且在算法达到稳态收敛时,满足:

limk→∞αk=0(20)

3.3 改进的双瞬变SPLMS算法——DSPLMS算法
用式(19)中αk的表达式替换式(1)中的α,就得到本文提出的具有双瞬变因子的LMS算法——DSPLMS算法,即
Wk+1=Wk+2μk(dk-WTk Xk)Xk+αk(Wk-Wk-1)(21)

μk=λ/(1+2λrk),0≤k≤k0(22)

由式(19)、(20)可知,αk是一个与μk成正比且具有衰减性的瞬变因子,从而使本文提出的DSPLMS算法比SPLMS算法更能快速稳定收敛;与常规LMS算法相比,其性能有极大的提高,为实时信号处理提供了一个较好的算法。
4 计算机仿真
仿真实验的结构如图1所示,其中dk为随机输入信号,nk为高斯白噪声,ek为输出误差,xk为自适应滤波器的输入,yk为滤波器输出,此时xk=dk+nk。

在图2中,dk是均值为0、方差为1的高斯白噪声;nk是与dk不相关的均值为0、方差为1的高斯白噪声;滤波器参数:M=32,λ=0.9,μL=0.005,μ=0.01,α=0.1。在图3中,nk为均值为0、方差为0.1的高斯白噪声,其它参数同图2。图2、3为分别采用LMS、SPLMS和DSPLMS算法进行滤波的学习曲线比较图。

从图2(强干扰启动)和图3(较弱干扰启动)中可以看出:在强干扰下,DSPL MS 具有比SPLMS好、比LMS好得多的启动速度和收敛速度;而在弱干扰下,DSPLMS仍具有比SPLMS快、比LMS快得多的启动速度。从图中同时还可看出:DSPLMS与SPLM S具有几乎相同的收敛速度,它们的收敛速度比LMS快得多。
5 结语
加进瞬变平滑项的规一化起动,使DSPLMS具有更高的起始收敛速度、更小的权失调噪声和更大的抑噪能力;在平稳连接之后的稳态过程中,该算法趋于步长为μ的LMS算法性能,但由于瞬变分量负脉冲的作用,在相近的权失调量下可按式(7)取较大的μ值,增强算法对时变参数过程的跟踪处理能力;输入数据的非平稳性越大,噪声方差越大时,加进的瞬变平滑项使权失调噪声减小,从而使本文提出的DSPLMS算法比SPLMS算法更能快速稳定地收敛;与常规LMS算法相比,其性能有极大的提高,可以明显抑制振动,从而加速收敛过程。

网址:

⑷ 自适应滤波器的原理

设计最佳滤波器,要求已知关于信号和噪声统计特性的先验知识。但在许多情况下人们对此并不知道或知道甚少,某些情况下这些统计特性还是时变的。处理上述这类信号需要采用自适应滤波器。如地球物理信息处理中,地球物理场的趋势分析,即场的滑动窗口处理方法就是典型的自适应滤波器的应用。

自适应信号处理器分为两大类,一类是自适应天线,另一类则是自适应滤波器。微电子技术和超大规模集成(VLS1)电路技术的进步,促进了自适应信号处理技术的发展,使之获得广泛的应用。本节简单介绍一下自适应滤波器的工作原理。

自适应滤波原理:自适应滤波器由参数可调的数字滤波器(或称为自适应处理器)和自适应算法两部分组成,如图3-12所示。参数可调数字滤波器可以是FIR数字滤波器或IIR数字滤波器,也可以是格型数字滤波器。输入信号x(n)通过参数可调数字滤波器后产生输出信号(或响应)y(n),将其与参考信号(或称期望响应)d(n)进行比较,形成误差信号e(n)。e(n)(有时还要利用x(n))通过某种自适应算法对滤波器参数进行调整,最终使e(n)的均方值最小。因此,实际上自适应滤波器是一种能够自动调整本身参数的特殊维纳滤波器,在设计时不需要事先知道关于输入信号和噪声的统计特性的知识,它能够在自己的工作过程中逐渐“了解”或估计出所需的统计特性,并以此为依据自动调整自己的参数,以达到最佳滤波效果。一旦输入信号的统计特性发生变化,它又能够跟踪这种变化,自动调整参数,使滤波器性能重新达到最佳。

图3-12 自适应滤波原理

图3-12所示的自适应滤波器有两个输入:x(n)和d(n),两个输出:y(n)和e(n)。其中x(n)可以是单输入信号,也可以是多输入信号。其余3个信号都是时间序列。在不同的应用场合中这些信号代表着不同的具体内容。

⑸ 自适应滤波的几种典型的自适应滤波算法

对自适应滤波算法 的研究是当今自适应信号处理中最为活跃的研究课题之一。自适应滤波算法广泛应用于系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测、自适应天线阵等诸多领域中。总之,寻求收敛速度快,计算复杂性低,数值稳定性好的自适应滤波算法是研究人员不断努力追求的目标。虽然线性自适应滤波器和相应的算法具有结构简单、计算复杂性低的优点而广泛应用于实际,但由于对信号的处理能力有限而在应用中受到限制。由于非线性自适应滤波器,如Voletrra滤波器和基于神经网络的自适应滤波器,具有更强的信号处理能力,已成为自适应信号处理中的一个研究热点。其中较典型的几种算法包括: LMS自适应滤波算法 RLS自适应滤波算法 变换域自适应滤波算法 仿射投影算法 共扼梯度算法 基于子带分解的自适应滤波算法 基于QR分解的自适应滤波算法 算法性能评价
变步长的自适应滤波算法 虽然解决了收敛速度、时变系统跟踪速度与收敛精度方面对算法调整步长因子u的矛盾,但变步长中的其它参数的选取还需实验来确定,应用起来不太方便。对RLS算法的各种改进,其目的均是保留RLS算法收敛速度快的特点而降低其计算复杂性。变换域类算法亦是想通过作某些正交变换使输入信号自相关矩阵的特征值发散程度变小,提高收敛速度。而仿射投影算法的性能介于LMS算法和RLS算法之间。共扼梯度自适应滤波算法的提出是为了降低RLS类算法的复杂性和克服某些快速RLS算法存在的数值稳定性问题。信号的子带分解能降低输入信号的自相关矩阵的特征值发散程度,从而加快自适应滤波算法的收敛速度,同时便于并行处理,带来了一定的灵活性。矩阵的QR分解具有良好的数值稳定性。

⑹ 自适应滤波器的原理介绍,分类及特性急!急!急!

数学原理
以输入和输出信号的统计特性的估计为依据,采取特定算法自动地调整滤波器系数,使其达到最佳滤波特性的一种算法或装置。自适应滤波器可 自适应滤波器
以是连续域的或是离散域的。离散域自适应滤波器由一组抽头延迟线、可变加权系数和自动调整系数的机构组成。附图表示一个离散域自适应滤波器用于模拟未知离散系统的信号流图。自适应滤波器对输入信号序列x(n)的每一个样值,按特定的算法,更新、调整加权系数,使输出信号序列y(n)与期望输出信号序列d(n)相比较的均方误差为最小,即输出信号序列y(n)逼近期望信号序列d(n)。 20世纪4 自适应滤波器
0年代初期,N.维纳首先应用最小均方准则设计最佳线性滤波器,用来消除噪声、预测或平滑平稳随机信号。60年代初期,R.E.卡尔曼等发展并导出处理非平稳随机信号的最佳时变线性滤波设计理论。维纳、卡尔曼-波色滤波器都是以预知信号和噪声的统计特征为基础,具有固定的滤波器系数。因此,仅当实际输入信号的统计特征与设计滤波器所依据的先验信息一致时,这类滤波器才是最佳的。否则,这类滤波器不能提供最佳性能。70年代中期,B.维德罗等人提出自适应滤波器及其算法,发展了最佳滤波设计理论。 以最小均方误差为准则设计的自适应滤波器的系数可以由维纳-霍甫夫方程解得 式中W(n)为离散域自适应滤波器的系数列矩阵(n)为输入信号序列x(n)的自相关矩阵的逆矩阵,Φdx(n)为期望输出信号序列与输入信号序列x(n)的互相关列矩阵。 B.维德罗提出的一种方法,能实时求解自适应滤波器系数,其结果接近维纳-霍甫夫方程近似解。这种算法称为最小均方算法或简称 LMS法。这一算法利用最陡下降法,由均方误差的梯 自适应滤波器
度估计从现时刻滤波器系数向量迭代计算下一个时刻的系数向量 式中憕【ε2(n)】为均方误差梯度估计, ks为一负数,它的取值决定算法的收敛性。要求,其中λ为输入信号序列x(n)的自相关矩阵最大特征值。 自适应 LMS算法的均方误差超过维纳最佳滤波的最小均方误差,超过量称超均方误差。通常用超均方误差与最小均方误差的比值(即失调)评价自适应滤波性能。 抽头延迟线的非递归型自适应滤波器算法的收敛速度,取决于输入信号自相关矩阵特征值的离散程度。当特征值离散较大时,自适应过程收敛速度较慢。格型结构的自适应算法得到广泛的注意和实际应用。与非递归型结构自适应算法相 自适应滤波器
比,它具有收敛速度较快等优点。人们还研究将自适应算法推广到递归型结构;但由于递归型结构自适应算法的非线性,自适应过程收敛性质的严格分析尚待探讨,实际应用尚受到一定限制。
编辑本段应用领域
自适应滤波器应用于通信领域的自动均衡、回波消除、天线阵波束形成,以及其他有关领域信号处理的参数识别、噪声消除、谱估计等方面。对于不同的应用,只是所加输入信号和期望信号不 自适应滤波器
同,基本原理则是相同的

阅读全文

与自适应滤波算法c相关的资料

热点内容
php中括号定义数组 浏览:600
php打印堆栈 浏览:514
华为adb命令行刷机 浏览:963
人像摄影pdf 浏览:755
解压文件密码怎样重新设置手机 浏览:999
高考指南pdf 浏览:693
爬虫python数据存储 浏览:240
u盘怎么取消加密 浏览:429
567除以98的简便算法 浏览:340
pdf手机如何解压 浏览:15
python描述器 浏览:60
战地联盟3解压密码 浏览:805
s型命令 浏览:25
php年薪5年 浏览:71
如何上网上设个人加密账户 浏览:44
linux打开ssh服务 浏览:78
微信位置可以加密吗 浏览:470
算法蛮力法 浏览:438
随机排练命令 浏览:147
python多进程并发 浏览:41