自适应滤波作业二
1引言
1.1 编写目的
自适应滤波是近30年以来发展起来的一种最佳滤波方法。它是在维纳滤波,kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法。由于它具有更强的适应性和更优的滤波性能。从而在工程实际中,尤其在信息处理技术中得到广泛的应用。自适应滤波的研究对象是具有不确定的系统或信息过程。“不确定” 是指所研究的处理信息过程及其环境的数学模型不是完全确定的。其中包含一些未知因数和随机因数。任何一个实际的信息过程都具有不同程度的不确定性,这些不确定性有时表现在过程内部,有时表现在过程外部。从过程内部来讲,描述研究对象即信息动态过程的数学模型的结构和参数是我们事先不知道的。作为外部环境对信息过程的影响,可以等效地用扰动来表示,这些扰动通常是不可测的,它们可能是确定的,也可能是随机的。此外一些测量噪音也是以不同的途径影响信息过程。这些扰动和噪声的统计特性常常是未知的。面对这些客观存在的各种不确定性,如何综合处理信息过程,并使某一些指定的性能指标达到最优或近似最优,这就是自适应滤波所要解决的问题。
在工程实际中,经常会遇到强噪声背景中的微弱信号检测问题。例如在超声波无损检测领域,因传输介质的不均匀等因素导致有用信号与高噪声信号迭加在一起。被埋藏在强背景噪声中的有用信号通常微弱而不稳定,而背景噪声往往又是非平稳的和随时间变化的,此时很难用传统方法来解决噪声背景中的信号提取问题。自适应噪声抵消技术是一种有效降噪的方法,当系统能提供良好的参考信号时,可获得很好的提取效果。与传统的平均迭加方法相比采用自适应平均处理方法还能降低样本数量。
1955-1966年期间美国通用公司在研制天线的过程中,为抑制旁瓣由windows和hoff在60年代初提出了基本LMS算法[1]。LMS算法是1960年由Widrow和Hoff提出的最小均方误差(LMS)算法,LMS算法是基于估计梯度的最速下降算法的,由于采用粗糙的梯度估计值得到的,从而其算法性能欠佳,应用范围受限,但是因为其具有计算量小、易于实现等优点而在实践中被广泛采用。典型的应用领域有系统识别、信号处理和自适应控制。LMS算法的基本原理是基于最速下
授课:XXX
希望对大家有所帮助,多谢您的浏览!
降法,即沿着权值的梯度估值的负方向进行搜索,达到权值最优,实现均方误差最小意义下的自适应滤波。初始收敛速度、时变系统跟踪能力及稳态失调是衡量自适应滤波算法优劣的三个重要的技术指标。由于主输入端不可避免地存在干扰噪声,自适应滤波算法将产生参数失调噪声。干扰噪声越大,则引起的失调噪声就越大。减小步长因子产可降低自适应滤波算法的稳态失调,提高算法的收敛精度。
授课:XXX
希望对大家有所帮助,多谢您的浏览!
[2]
1.2 使用范围
LMS算法是自适应滤波器中应用最广泛的算法,它主要包括以下几个方面的应用:
1、系统辨识和建模(System Identification and Modeling)。自适应滤波器作为估计未知系统特性的模型。
2、自适应信道均衡(Adaptive Channel Equlization)。在数字通信中采用自适应信道均衡器,可以减小传输失真,以及尽可能地利用信道带宽。
3、回波消除(Echo Cancellation)。在2线和4线环路电话系统中,线路间存在杂散电路耦合,这些杂散导致阻抗不匹配,从而形成了信号的反射,也就是我们在线路两端听到的回声。这种回波能对高速数据传输造成灾难性的后果。回波消除就是预先估计一个回波,然后用返回信号来减此回波,从而达到回波消除的目的。消除心电图中的电源干扰就是它的一个具体应用。
4、线性预测编码(Linear Predictive Coding)。近年来,对语音波形进行编码,它可以大大降低数据传输率。在接收端使用LPC分析得到的参数,通过话音合成器重构话音。合成器实际上是一个离散的随时间变化的时变线性滤波器。时变线性滤波器既当作预测器使用,又当作合成器使用。分析语音波形时作预测器使用,合成语音时作话音生成模型使用。
5、自适应波束形成(Adaptive Beaamforming)。频谱资源越来越紧张,利用现有频谱资源进一步扩展容量成为通信发展的一个重要问题。智能天线技术利用阵列天线替代常规天线,它能够降低系统干扰,提高系统容量和频谱效率,因此智能天线技术受到广泛关注。自适应束波形成通过调节天线各阵元的加权幅度和相位,来改变阵列的方向图,使阵列天线的主瓣对准期望用户,从而提高接收信噪比,满足某一准则下的最佳接收。在雷达与声纳的波束形成中,自适应滤波器用于波束方向控制,并可在方向图中提供一个零点以便消除不希望的干扰。
授课:XXX
希望对大家有所帮助,多谢您的浏览!
其应用还有噪声中信号的滤波、跟踪、谱线增强以及预测等。
2. 算法描述
2.1 基本原理
LMS算法是自适应滤波器中常用的一种算法,与维纳算法不同的是,其系统的系数随输入序列而改变。维纳算法中截取输入序列自相关函数的一段构造系统的最佳系数。而LMS算法则是对初始化的滤波器系数依据最小均方误差准则进行不断修正来实现的。因此,理论上讲LMS算法的性能在同等条件下要优于维纳算法,但是LMS算法是在一个初始化值得基础上进行逐步调整得到的,因此,在系统进入稳定之前有一个调整的时间,这个时间受到算法步长因子µ的控制,在一定值范围内,增大µ会减小调整时间,但超过这个值范围时系统不再收敛,µ的最大取值为R的迹。权系数更新公式为:Wi+1=Wi+2µeiXi依据上述算式,制定LMS滤波器设计实现方法为:
(1) 设计滤波器的初始化权系数W(0)=0,收敛因子µ; (2) 计算输入序列经过滤波器后的实际输出值:out(n)=wHx(n); (3) 计算估计误差e(n)=d(n)-out(n)=d(n)-wHx(n) ; (4) 计算n+1阶的滤波器系数(n1)(n)2e(n)x(n); (5) 重复(2)--(4)过程;
2.2 算法在自适应干扰对消系统中的应用
我现在所处的课题小组主要是研究自适应干扰对消技术。
d=s+n0 信号源s v ∑ e y 噪声源n1 自适应滤波器
图2.1 自适应噪声抵消框图
自适应算法中使用最广的是下降算法,下降算法的实现方式有两种:自适应
图梯度算法和自适应高斯-牛顿算法。自适应高斯-牛顿算法包括RLS算法及其变
授课:XXX
希望对大家有所帮助,多谢您的浏览!
型和改进型,自适应梯度算法包括LMS算法及其变型和改进型
授课:XXX
希望对大家有所帮助,多谢您的浏览!
[1,3]
。
滤波器设计准则是使滤波器实际输出y(n)与期望响应d(n)之间的均方误差J(n)为最小,这称为最小均方误差(MMSE)准则。
最陡下降算法不需要知道误差特性曲面的先验知识,其算法就能收敛到最佳维纳解,且与起始条件无关[1]。但是最陡下降算法的主要是它需要准确测得每次迭代的梯度矢量,这妨碍了它的应用。为了减少计算复杂度和缩短自适应收敛时间许多学者对这方面的新算法进行了研究。1960年,美国斯坦福大学的Windrow等提出了最小均方(LMS)算法,这是一种用瞬时值估计梯度矢量的方法,这种瞬时估计法是无偏的,因为它的期望值E[(n)]确实等于矢量(n)。所以,按照自适应滤波器滤波系数矢量的变化与梯度矢量估计的方向之间的关系,可以先写出LMS算法的公式如下:
将上式代人最陡下降法迭代计算权矢量的公式得:
(n1)(n)((n))
(2-1)
则LMS算法的基本关系式为:
(n1)(n)2e(n)x(n)
其中µ是收敛因子,决定收敛速度及稳定性,µ满足0<µ<1/λmax,λmax是Rxx的最大特征值,Rxx=E[X(n)XT(n)]
如同最陡下降法,我们利用时间n=0的滤波系数矢量为任意的起始值w(0),然后开始LMS算法的计算,其步骤如下。
(1) 由现在时刻n的滤波器滤波系数矢量估值w(n),输入信号矢量x(n)
以及期望信号d(n),计算误差信号:
e(n)=d(n)-x(n)w(n) (2-2)
(2) 利用递归法计算滤波器系数矢量的更新估值:
w(n1)w(n)e(n)x(n) (2-3)
H将时间指数n增加1,回到步骤(1),重复上述计算步骤,一直到达稳态为止。由此可见,自适应LMS算法简单,它既不要计算输入信号的相关函数,又不要求矩阵之逆,因而得到了广泛的应用。但是,由于LMS算法采用梯度矢量的瞬时估计,它有大的方差,以致不能获得最优滤波性能[3]。下面我们来分析LMS算法的性能。
授课:XXX
希望对大家有所帮助,多谢您的浏览!
2.2.1自适应收敛性
LMS算法的性能准则是采用瞬时平方误差性能函数|e(k)|2代替均方误差性能函数E{|e(k)|2},其实质是以当前输出误差、当前参考信号和当前权系数求得下个时刻的权系数。
其输出信号y(k)、输出误差e(k)及权系数W(k)的计算公式为:
[4 ]
y(k)W(k)XT(k)e(k)d(k)y(k)W(k1)W(n)2e(k)X(k)d(k)x(k)n(k) (2-4)
k为迭代次数,M为滤波器的阶数。d(k)表示第k时刻的输入信号矢量式中,式中,X(k)表示参考信号的信号矢量:
X(k)[n(k),n(k1)n(kM1)] (2-5)
y(k)、e(k)分别表示第k时刻的输出信号与输出误差,W(k)表示k时刻权系
数矢量:
W(k)W(k,0),W(k,1)......W(k,M1) (2-6)
µ表示LMS算法步长收敛因子。自适应滤波器收敛的条件是:
01max (2-7)
其中max是输入信号的自相关矩阵R的最大特征值。µ的选取必须在收敛速度和失调之间取得较好的折中,既要具有较快的收敛速度,又要使稳态误差最小。它控制了算法稳定性和自适应速度,如果µ很小,算法的自适应速度会很慢;如果µ很大,算法会变得不稳定。由于LMS算法结构简单、计算量小、稳定性好,因此被广泛应用于系统辨识、信号增强、自适应波束形成、噪声消除以及控制领域等。
在最小均方差(LMS)算法中,步长因子µ的取值对算法的性能有着非常重要的影响,这些影响包括:算法的稳定性、算法的收敛速度、算法的扰动和失调。以下我们针对µ在这三方面的影响分别进行讨论。为减小失调,需要设置较小的步长因子,这会使算法的收敛速度降低,这构成了一对矛盾。因此在考虑算法的总体性能时,必须在这两个性能之间加以折中。从收敛速度的角度考虑,步长因子µ应该尽可能大,但较大的µ取值却会加重算法的失调。LMS算法采用瞬时的采样值对梯度进行估计,由于噪声的影响,总会是会伴随着估计的误差,这将对算法带来直接的影响。这些影响主要表现为算法的失调,而失调的严重程度,则和µ的取值存在直接关系。失调是指由于梯度估计偏差的存在,在算
授课:XXX
希望对大家有所帮助,多谢您的浏览!
法收敛后,均方误差并不无穷趋近于最小值,而是呈现出在最小值附近随机的波动特性,而权值亦不无穷趋近于最优权值,而是在最优权值附近呈现随机的波动
授课:XXX
希望对大家有所帮助,多谢您的浏览!
。
关于LMS算法的收敛速度,将讨论对一个特定的信号环境,收敛速度和步长因子µ有何关系。从收敛速度的角度考虑,步长因子µ应该尽可能大。此外信号环境,即Rxx的特性对算法收敛性能的影响如果当特征值的分布范围较大,即最大特征值和最小特征值之比较大时,公比的取值幅度也将比较大,算法的总的收敛速度将会变得比较慢。 3. 仿真结果与分析
3.1 仿真条件与假设
为了缩短收敛过程,一般有三种方法:一是采用不同的梯度估值;二是对收敛因子步长µ选用不同的方法;三是采用变换域分块处理技术。
而在本文中,我采用第二种方法,通过对收敛因子步长µ使用不同的方法来得到较快的收敛过程。采用第二种方法的原因是步长µ的大小决定着算法的收敛速度和达到稳态的失调量的大小。对于常数的µ值来说,收敛速度和失调量是一对矛盾,要想得到较快的收敛速度可选用大的µ值,这将导致较大的失调量;如果要满足失调量的要求,则收敛速度受到制约。因此,人们研究了采用变步长的方法来克服这一矛盾。自适应过程开始时,取用较大的µ值以保证较快的收敛速度,然后让µ值逐渐减小,以保证收敛后得到较小的失调量。现在已有不同准则来调整步长µ,如归一化LMS算法、时域正交化LMS算法等。在仿真中选用不同的µ值来对其性能进行仿真,然后再调整µ值得到较好的收敛曲线。
3.2 仿真结果 3.21程序代码
%LMS算法的MATLAB实现
%用MATLAB实现LMS算法,将输入和输出信号进行对比,并给出均方误差的曲线。 %假设滤波器抽头个数位k,数据长度为N。 tic;
g=100; %统计仿真次数 N=1024; %输入信号抽样点数
k=128; %时域抽头LMS算法滤波器阶数
pp=zeros(g,N-k); %将每次循环的误差结果存于PP中,以便后面对其平均 u=0.0002; for q=1:g t=1:N;
授课:XXX
希望对大家有所帮助,多谢您的浏览!
a=1;
s=a*sin(0.05*pi*t); %输入单频信号s figure(1); subplot(311)
plot(t,real(s)); %信号s时域波形 title('信号s时域波形');
axis([0,N,-a-1,a+1]); %加入均值为零的高斯白噪声,信噪比为3dB %设置初值
xn=awgn(s,5); %输出信号y
y=zeros(1,N); %将输入信号xn的前k个值作为输出y的前k个值 y(1:k)=xn(1:k); %设置抽头加权初值 w=zeros(1,k); %误差信号 %用LMS算法迭代滤波 e=zeros(1,N); for i=(k+1):N
XN=xn((i-k+1):(i)); y(i)=w*XN'; e(i)=s(i)-y(i); w=w+2*u*e(i)*XN; end
pp(q,:)=(e(k+1:N)).^2; end
subplot(312)
plot(t,real(xn)); %信号s时域波形 title('信号s加噪声后的时域波形'); axis([0,N,-a-1,a+1]) subplot(313)
plot(t,real(y)); %信号s时域波形 title('自适应滤波后的输出时域波形'); axis([0,N,-a-1,a+1]) for b=1:N-k
bi(b)=sum(pp(:,b))/g; %求误差的统计平均 end
figure(2); %算法收敛曲线 t=1:N-k; plot(t,bi,'r'); title('算法收敛曲线'); toc;
3.2.2仿真结果
授课:XXX
希望对大家有所帮助,多谢您的浏览!
信号s时域波形20-220-220-201002003004005006007008009001000信号s加噪声后的时域波形01002003004005006007008009001000u=0.00001自适应滤波后的输出时域波形01002003004005006007008009001000
图3.1u=0.00001时正弦加噪信号的滤波
u=0.00001算法收敛曲线10.90.80.70.60.50.40.30.20.100100200300400500600700800900
图3.2 u=0.00001时LMS算法收敛曲线
授课:XXX
希望对大家有所帮助,多谢您的浏览!
信号s时域波形20-220-220-201002003004005006007008009001000信号s加噪声后的时域波形01002003004005006007008009001000u=0.0001自适应滤波后的输出时域波形01002003004005006007008009001000图3.3u=0.0001时正弦加噪信号的滤波
u=0.0001算法收敛曲线10.90.80.70.60.50.40.30.20.100100200300400500600700800900图3.4 u=0.0001时LMS算法收敛曲线
授课:XXX
希望对大家有所帮助,多谢您的浏览!
信号s时域波形20-220-220-201002003004005006007008009001000信号s加噪声后的时域波形01002003004005006007008009001000u=0.001自适应滤波后的输出时域波形01002003004005006007008009001000图3.5u=0.001时正弦加噪信号的滤波
u=0.001算法收敛曲线10.90.80.70.60.50.40.30.20.100100200300400500600700800900图3.6 u=0.001时LMS算法收敛曲线
授课:XXX
希望对大家有所帮助,多谢您的浏览!
信号s时域波形20-220-220-201002003004005006007008009001000信号s加噪声后的时域波形01002003004005006007008009001000u=0.01自适应滤波后的输出时域波形01002003004005006007008009001000图3.7u=0.01时正弦加噪信号的滤波
876543210x 1015u=0.01算法收敛曲线0100200300400500600700800900图3.8 u=0.01时LMS算法收敛曲线
3.3 仿真结果分析
µ的大小影响算法的收敛速度,µ值小,收敛速度慢,计算工作量大,但滤
授课:XXX
希望对大家有所帮助,多谢您的浏览!
波性能较好。
授课:XXX
希望对大家有所帮助,多谢您的浏览!
µ值大,收敛速度快,计算工作量小,滤波性能较差。但当µ>1/λmax时,系统发散,收敛速度不明显,且取值过多,会造成计算溢出。所以,对µ的选择应综合整个系统考虑,在满足精度要求的基础上,尽量减少自适应时间。 4. 结论
LMS算法确实结构简单、计算量小且稳定性好,本文主要讨论了步长因子µ,µ较小时,自适应速率减慢,因此自适应后平均额外均方误差较小,这是因为滤波器使用大量的数据估计梯度向量。另一方面,当µ较大时,自适应速率相对较快,但以自适应后平均额外均方误差的增加为代价。在这种情况下较少数据进入估计,故滤波器误差性能恶化。
对一个特定的信号环境,收敛速度和步长因子µ有何关系。而信号环境本身的特性,即Rxx的特性对算法收敛性能的影响我并没有进行讨论,且本文设置的是固定步长,实际与适应算法在收敛速率、跟踪速率及权失调噪声之间的要求是相互矛盾的,关于变步长的改进算法还需探讨。 参考文献
授课:XXX
希望对大家有所帮助,多谢您的浏览!
[1] 何振亚著。自适应信号处理[M].科学出版社,2002。
[2] Simon Haykin.Adaptive filter theory.4th edition.Prentice Hall,2002,25-32.
[3] 姚天任,孙洪。现代数字信号处理[M].华中理工大学出版社,1999. [4] David R A.IIR Adaptive Algorithms Based on Gradient Search Techniques. Standford Univ:Standford Calif,1981,49-58.
授课:XXX
希望对大家有所帮助,多谢您的浏览!
自适应滤波作业一
%维纳滤波
%Create the Signals for Wiener filtering n = (1:1000)';
s =0.5* sin(0.075*pi*n); %Generate the Noise Signal
v = 0.8*randn(1000,1); % Random noise part.
ar = [1,1/2]; % Autoregression coefficients.
v1 = filter(1,ar,v); % Noise signal. Applies a 1-D digital filter. %Corrupt the Desired Signal to Create a Noisy Signal x = s + v1;
%Create a Reference Signal ma = [1, -0.8, 0.4 , -0.2]; v2 = filter(ma,1,v); N=100; %维纳滤波器长度 Mlag=100;
Rxnx=xcorr(x,s,Mlag,'biased');%产生输入信号x与原始信号s的互相关函数 Rxn=xcorr(x,Mlag,'biased');%计算输入信号x的自相关函数 rxnx=zeros(N,1);%N-by-1 matrix of zeros rxnx(:)=Rxnx(101:101+N-1);
Rxx=zeros(N,N);%产生输入信号自相关矩阵
Rxx=diag(Rxn(101)*ones(1,N))%diag指的是只保留原矩阵的主对角线的元素,其余的元素以零取代
for i=2:N
c=Rxn(101+i)*ones(1,N+1-i); Rxx=Rxx+diag(c,i-1)+diag(c,-i+1); end Rxx;
h=zeros(N,1);
h=inv(Rxx)*rxnx;%计算维纳滤波器的h(n) y=filter(h,1,x);%将输入信号通过维纳滤波器 yw = filter(h,1,v2); yn=y-yw; figure(2) %Plot the Results
plot(n(900:end),yn(900:end));
legend('Wiener filter denoised sinusoid'); xlabel('Time index (n)'); ylabel('Amplitude');
%As a reference point, include the noisy signal as a dotted line in the %plot. hold on
授课:XXX
希望对大家有所帮助,多谢您的浏览!
plot(n(900:end),x(900:end),'k:') xlabel('Time index (n)'); ylabel('Amplitude'); hold off
程序运行结果如下
3Wiener filter denoised sinusoid2 1Amplitude0-1-2-3 900910920930940950960Time index (n)9709809901000
图1winner滤波器滤波结果图
(注:可编辑下载,若有不当之处,请指正,谢谢!)
授课:XXX
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务