自适应滤波器的MATLAB实现

自适应滤波器的MATLAB实现

2009级

1引言

滤波是信号与信息处理领域的一种最基本而又重要的技术。在信号的传输过程中,通常会受到噪声或干扰的污染,而滤波器就是用来从含有噪声或干扰信号的数据中提取人们感兴趣的、接近规定质量的信息。滤波器实际上是一种选频系统,它对某些频率的信号予以很小的衰减,让该部分信号顺利通过;而对其他不需要的频率信号则予以很大的衰减,尽可能阻止这些信号通过。通信与信息系统李晓燕

2自适应滤波器简介

在设计维纳和卡尔曼滤波器时,要求已知所要处理的数据统计方面的先验知识。只有当输入数据的统计特性与滤波器设计所依赖的某一先验知识匹配时,该滤波器才是最优的。但在很多情况下人们对此并不知道或知道甚少,某些情况下这些统计特性还是时变的。为了处理上述的这种情况,可采用自适应滤波器。采用这样的系统,意味着滤波器是自设计的,即自适应滤波器依靠递归算法进行计算,这使其有可能在无法获得有关信号特征完整知识的环境下,完满的完成滤波运算。

3自适应滤波器的应用

自适应滤波器具有在未知环境下良好运行并跟踪时变输入统计量的能力,使得自适应滤波器成为信号处理和自动控制应用的有力手段。实际上,自适应滤波器已经成功的应用与雷达、通信、声纳、地震学和生物医学工程等领域。这些应用在特性方面千变万化,但有一个共同的基本特征,即用输入向量和期望响应来计算估计误差,并用该误差依次控制一组可调滤波器系数。然而自适应滤波器各种应用之间的本质不同在于其期望响应的获取方式不同,根据这一原则,可将自适应滤波器应用分为四种类型,如下:自适应滤波的类型

辨识

逆模型应用系统辨识分层地球建模

均衡用途给定一个未知的动态系统,设计一个自适应滤波器以逼近该动态系统在地震探测中,开发研究地球的分层模型给一个未知脉冲的信道,自适应均衡器通过操作信道输出,使得信道与均衡器

的级联提供理想传输媒介的一个良好逼近

预测预测编码自适应预测用来对感兴趣的信号建模,而不是直接对信号编码。在该编码中,

预测误差被编码以便于传输和存储。

谱分析

消除干扰噪声消除

波束形成预测模型用于估计某一感兴趣信号的功率谱从接收信号中去除噪声以改善信噪比,如心电图学中的应用自适应波束形成器用于控制加权系数以便消除与未知方向阵列密切有关的干扰

信号,并对感兴趣的目标信号提供保护

4自适应滤波器的原理

自适应滤波器是相对固定滤波器而言的。固定滤波器属于经典滤波器,它滤波的频率是固定的。而自适应滤波器滤波的频率则是自动适应输入信号而变化的,所以其适用范围更广。在没有任何关于信号和噪声的先验知识的条件下,自适应滤波器利用前一时刻已获得的滤波器参数等结果来自动调节现时刻的滤波器参数,以适应信号和噪声未知或随机变化的统计特性,从而实现最优滤波。自适应滤波器实质上就是一种能调节其自身传输特性以达到最优化的维纳滤波器。

自适应滤波器一般由两部分组成:滤波器结构和调整滤波器系数的自适应算法。自适应滤波器的结构

采用FIR或IIR结构均可,但由于IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应

滤波器的结构。

自适应滤波器

上图为自适应滤波器结构的一般形式,图中x(n)为输入信号,通过参数可调的数字滤波器后产生输出信号y(n),再将y(n)与期望信号(或为标准信号)d(n)进行比较后,得到了误差信号e(n)。e(n)和x(n)通过自适应算法对滤波器的参数进行调整,最终使得误差信号e(n)最小。

自适应滤波器设计中最常用的是FIR

横向型结构。

横向型滤波器

上图是横向型滤波器的结构示意图。其中:x(n)为自适应滤波器的输入;w(n)为自适应滤波器的冲激响应;w(n)={w(0),w(1),…,w(N-1)};y(n)为自适应滤波器的输出;y(n)=x(n)*w(n)。即y(n)=WT(n)X(n)=∑wi(n)x(n−i)

i=0N−1。

5自适应滤波算法

自适应滤波器主要是根据其输入的统计特性进行设计的。自适应滤波器的算法则以各种判据条件作为推算基础。通常有两种判据条件:最小均方误差判据和最小二乘方判据。LMS算法是以最小均方误差为判据的最典型的算法,也是一种易于实现、性能稳健、应用广泛的算法。LMS算法最显著的特点是它的简单性,此外它不需要计算有关的相关函数,也不需要矩阵求逆运算。

LMS算法是一种有用的估计梯度的方法,其目的是通过调整系数,使输出误差序列e(n)=d(n)-y(n)的均方值最小化,并且根据这个判据来修改权系数。其中误差序列的均方值又叫“均方误差”(MeanSqluareError,MSE)。一般来说,此算法包含两个基本过程:一是滤波过程,包括计算滤波器输出对输入信号的响应和通过比较输出结果与期望响应产生估计误差。二是自适应过程,即根据估计误差自动调整滤波器参数。这两个过程一起工作组成一个反馈环。

LMS算法最核心的思想是用平方误差代替均方误差。即

∂e2(n)∂e2(n)∂e2(n)∂e2(n)T∇(n)≈∇(n)==[......]∂w∂ω0∂ω1∂ωl∧∆

∴∇(n)=2e(n)∂e(n)=−2e(n)x(n)∧

∂w

将上式带入最陡下降法迭代计算权矢量的公式,得

w(n+1)=w(n)−µ∇(n)

LMS算法的基本公式是:∧

w(n+1)=w(n)+2µe(n)x(n)

其中µ是收敛因子,又称为步长参数,决定了收敛速度和稳定性,µ满足:0〈µ〈1

λmax,λmax是Rxx的最

大特征值,Rxx=E{X(n)XT(n)}。

使用MATLAB这个工具可以较好的观察和分析各种LMS的收敛性能。

基本LMS算法的M程序:

clearall

closeall

clc

a1=-0.195;

a2=0.95;

u=0.03;%步长因子

N=2;%滤波器阶数

N1=1000;%数据总长

N2=512;%截取长度

K=100;%独立实验次数

var_v=0.0961;%噪声方差

M1=0;%理论失调参数

M2=0;%计算失调参数

p1=0.9;

p2=1.1;

u1=zeros(1,N1);

u2=zeros(1,N2);

Jn_aver=zeros(1,N2);

W=zeros(1,N);

J=0;

fori=1:K

v=sqrt(var_v)*randn(1,N1);

form=1:N1-2

u1(m+2)=-a1*u1(m+1)-a2*u1(m)+v(m);

end

u2=u1(N1-N2+1:N1);%取后N2个稳定值

w=zeros(1,N);%初始化权向量w(0)=w(1)=0

err=0;%估计误差

d=0;%期望信号

u3=zeros(1,N);%输入向量初始化

u4=[zeros(1,N)u2];

Jn=zeros(1,N2);

forn=1:N2

w=w+u*u3*conj(err);%权向量的更新

u3=u4(n+N-1:-1:n);%更新输入向量u3=[u4(n+1)u4(n)]

d=conj(w)*(u3.');%期望信号估计

err=u4(n+2)-d;%估计误差

Jn(n)=(abs(err)).^2;%均方误差

end

Jn_aver=Jn_aver+Jn;

W=W+w;

end

EJex_inf=u*var_v*(p1+p2)/(2-u*(p1+p2))%剩余均方误差统计平均值E[Jex(inf)]

M1=EJex_inf/var_v%计算理论失调

W=W./K%权向量

Jn_aver=Jn_aver./K;

Jex_n=Jn_aver(N2)-var_v%n次迭代后的剩余均方误差值

M2=Jex_n/var_v%n次迭代后的失调

plot(Jn_aver);

title(['LP(2)LMS学习曲线u=0.05,w=',num2str(W)])

gridon

xlabel('n/迭代次数');

ylabel('E[Jn(n)]');

axis([15120

1.5]);

6自适应滤波算法的理论仿真

采用自适应滤波器技术可以实现信噪分离,也就是去噪。用Matlab工具编程如下:

samples_per_period=40;%周期采样频率

N=10*samples_per_period-1;%总采样次数

signal=sin(2*pi*0.02*[0:N-1]);%初始输入信号

figure;%作图1的第一子图

subplot(2,1,1);

plot(signal);

grid;

title('自适应滤波器的理想输入');

nvar=0.5;%噪声方差

noise=nvar*randn(1,N);%噪声信号

X=signal+noise;%带加性噪声的输入信号

delayX=[0X];%输入信号延时

SIGNAL=[signal0];

M=32;%滤波器长度

mu=0.035;%迭代步长

subplot(2,1,2);%作图1的第二子图

plot(delayX);

grid;

title('自适应滤波器的噪声输入');

initial_status=initlms(zeros(1,M),mu);%滤波器设初值

[Y,e,initial_status]=adaptlms(X,SIGNAL,initial_status);%LMS自适应滤波器输出

figure;

plot(0:N-1,Y,'.',0:N,SIGNAL,'k');

grid;

title('预测信号与实际信号的比较');

legend('预测信号','实际信号');

当signal=sin(2*pi*0.02*[0:N-1])

①M=32

M=16

③M=64

当signal=sin(2*pi*0.01*[0:N-1])

M=32

②M=16

M=64

可以看出,LMS自适应滤波器在噪声消除方面具有很好的效果,且在信噪比较小的情况下也可以完成一定条件下的数字滤波任务,但此法仍然有许多需要改进的地方,如在信噪比较小的时候,需要滤波器的长度比较大,这样滤波器在实时处理方面受到很大限制。

自适应滤波器的MATLAB实现

2009级

1引言

滤波是信号与信息处理领域的一种最基本而又重要的技术。在信号的传输过程中,通常会受到噪声或干扰的污染,而滤波器就是用来从含有噪声或干扰信号的数据中提取人们感兴趣的、接近规定质量的信息。滤波器实际上是一种选频系统,它对某些频率的信号予以很小的衰减,让该部分信号顺利通过;而对其他不需要的频率信号则予以很大的衰减,尽可能阻止这些信号通过。通信与信息系统李晓燕

2自适应滤波器简介

在设计维纳和卡尔曼滤波器时,要求已知所要处理的数据统计方面的先验知识。只有当输入数据的统计特性与滤波器设计所依赖的某一先验知识匹配时,该滤波器才是最优的。但在很多情况下人们对此并不知道或知道甚少,某些情况下这些统计特性还是时变的。为了处理上述的这种情况,可采用自适应滤波器。采用这样的系统,意味着滤波器是自设计的,即自适应滤波器依靠递归算法进行计算,这使其有可能在无法获得有关信号特征完整知识的环境下,完满的完成滤波运算。

3自适应滤波器的应用

自适应滤波器具有在未知环境下良好运行并跟踪时变输入统计量的能力,使得自适应滤波器成为信号处理和自动控制应用的有力手段。实际上,自适应滤波器已经成功的应用与雷达、通信、声纳、地震学和生物医学工程等领域。这些应用在特性方面千变万化,但有一个共同的基本特征,即用输入向量和期望响应来计算估计误差,并用该误差依次控制一组可调滤波器系数。然而自适应滤波器各种应用之间的本质不同在于其期望响应的获取方式不同,根据这一原则,可将自适应滤波器应用分为四种类型,如下:自适应滤波的类型

辨识

逆模型应用系统辨识分层地球建模

均衡用途给定一个未知的动态系统,设计一个自适应滤波器以逼近该动态系统在地震探测中,开发研究地球的分层模型给一个未知脉冲的信道,自适应均衡器通过操作信道输出,使得信道与均衡器

的级联提供理想传输媒介的一个良好逼近

预测预测编码自适应预测用来对感兴趣的信号建模,而不是直接对信号编码。在该编码中,

预测误差被编码以便于传输和存储。

谱分析

消除干扰噪声消除

波束形成预测模型用于估计某一感兴趣信号的功率谱从接收信号中去除噪声以改善信噪比,如心电图学中的应用自适应波束形成器用于控制加权系数以便消除与未知方向阵列密切有关的干扰

信号,并对感兴趣的目标信号提供保护

4自适应滤波器的原理

自适应滤波器是相对固定滤波器而言的。固定滤波器属于经典滤波器,它滤波的频率是固定的。而自适应滤波器滤波的频率则是自动适应输入信号而变化的,所以其适用范围更广。在没有任何关于信号和噪声的先验知识的条件下,自适应滤波器利用前一时刻已获得的滤波器参数等结果来自动调节现时刻的滤波器参数,以适应信号和噪声未知或随机变化的统计特性,从而实现最优滤波。自适应滤波器实质上就是一种能调节其自身传输特性以达到最优化的维纳滤波器。

自适应滤波器一般由两部分组成:滤波器结构和调整滤波器系数的自适应算法。自适应滤波器的结构

采用FIR或IIR结构均可,但由于IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应

滤波器的结构。

自适应滤波器

上图为自适应滤波器结构的一般形式,图中x(n)为输入信号,通过参数可调的数字滤波器后产生输出信号y(n),再将y(n)与期望信号(或为标准信号)d(n)进行比较后,得到了误差信号e(n)。e(n)和x(n)通过自适应算法对滤波器的参数进行调整,最终使得误差信号e(n)最小。

自适应滤波器设计中最常用的是FIR

横向型结构。

横向型滤波器

上图是横向型滤波器的结构示意图。其中:x(n)为自适应滤波器的输入;w(n)为自适应滤波器的冲激响应;w(n)={w(0),w(1),…,w(N-1)};y(n)为自适应滤波器的输出;y(n)=x(n)*w(n)。即y(n)=WT(n)X(n)=∑wi(n)x(n−i)

i=0N−1。

5自适应滤波算法

自适应滤波器主要是根据其输入的统计特性进行设计的。自适应滤波器的算法则以各种判据条件作为推算基础。通常有两种判据条件:最小均方误差判据和最小二乘方判据。LMS算法是以最小均方误差为判据的最典型的算法,也是一种易于实现、性能稳健、应用广泛的算法。LMS算法最显著的特点是它的简单性,此外它不需要计算有关的相关函数,也不需要矩阵求逆运算。

LMS算法是一种有用的估计梯度的方法,其目的是通过调整系数,使输出误差序列e(n)=d(n)-y(n)的均方值最小化,并且根据这个判据来修改权系数。其中误差序列的均方值又叫“均方误差”(MeanSqluareError,MSE)。一般来说,此算法包含两个基本过程:一是滤波过程,包括计算滤波器输出对输入信号的响应和通过比较输出结果与期望响应产生估计误差。二是自适应过程,即根据估计误差自动调整滤波器参数。这两个过程一起工作组成一个反馈环。

LMS算法最核心的思想是用平方误差代替均方误差。即

∂e2(n)∂e2(n)∂e2(n)∂e2(n)T∇(n)≈∇(n)==[......]∂w∂ω0∂ω1∂ωl∧∆

∴∇(n)=2e(n)∂e(n)=−2e(n)x(n)∧

∂w

将上式带入最陡下降法迭代计算权矢量的公式,得

w(n+1)=w(n)−µ∇(n)

LMS算法的基本公式是:∧

w(n+1)=w(n)+2µe(n)x(n)

其中µ是收敛因子,又称为步长参数,决定了收敛速度和稳定性,µ满足:0〈µ〈1

λmax,λmax是Rxx的最

大特征值,Rxx=E{X(n)XT(n)}。

使用MATLAB这个工具可以较好的观察和分析各种LMS的收敛性能。

基本LMS算法的M程序:

clearall

closeall

clc

a1=-0.195;

a2=0.95;

u=0.03;%步长因子

N=2;%滤波器阶数

N1=1000;%数据总长

N2=512;%截取长度

K=100;%独立实验次数

var_v=0.0961;%噪声方差

M1=0;%理论失调参数

M2=0;%计算失调参数

p1=0.9;

p2=1.1;

u1=zeros(1,N1);

u2=zeros(1,N2);

Jn_aver=zeros(1,N2);

W=zeros(1,N);

J=0;

fori=1:K

v=sqrt(var_v)*randn(1,N1);

form=1:N1-2

u1(m+2)=-a1*u1(m+1)-a2*u1(m)+v(m);

end

u2=u1(N1-N2+1:N1);%取后N2个稳定值

w=zeros(1,N);%初始化权向量w(0)=w(1)=0

err=0;%估计误差

d=0;%期望信号

u3=zeros(1,N);%输入向量初始化

u4=[zeros(1,N)u2];

Jn=zeros(1,N2);

forn=1:N2

w=w+u*u3*conj(err);%权向量的更新

u3=u4(n+N-1:-1:n);%更新输入向量u3=[u4(n+1)u4(n)]

d=conj(w)*(u3.');%期望信号估计

err=u4(n+2)-d;%估计误差

Jn(n)=(abs(err)).^2;%均方误差

end

Jn_aver=Jn_aver+Jn;

W=W+w;

end

EJex_inf=u*var_v*(p1+p2)/(2-u*(p1+p2))%剩余均方误差统计平均值E[Jex(inf)]

M1=EJex_inf/var_v%计算理论失调

W=W./K%权向量

Jn_aver=Jn_aver./K;

Jex_n=Jn_aver(N2)-var_v%n次迭代后的剩余均方误差值

M2=Jex_n/var_v%n次迭代后的失调

plot(Jn_aver);

title(['LP(2)LMS学习曲线u=0.05,w=',num2str(W)])

gridon

xlabel('n/迭代次数');

ylabel('E[Jn(n)]');

axis([15120

1.5]);

6自适应滤波算法的理论仿真

采用自适应滤波器技术可以实现信噪分离,也就是去噪。用Matlab工具编程如下:

samples_per_period=40;%周期采样频率

N=10*samples_per_period-1;%总采样次数

signal=sin(2*pi*0.02*[0:N-1]);%初始输入信号

figure;%作图1的第一子图

subplot(2,1,1);

plot(signal);

grid;

title('自适应滤波器的理想输入');

nvar=0.5;%噪声方差

noise=nvar*randn(1,N);%噪声信号

X=signal+noise;%带加性噪声的输入信号

delayX=[0X];%输入信号延时

SIGNAL=[signal0];

M=32;%滤波器长度

mu=0.035;%迭代步长

subplot(2,1,2);%作图1的第二子图

plot(delayX);

grid;

title('自适应滤波器的噪声输入');

initial_status=initlms(zeros(1,M),mu);%滤波器设初值

[Y,e,initial_status]=adaptlms(X,SIGNAL,initial_status);%LMS自适应滤波器输出

figure;

plot(0:N-1,Y,'.',0:N,SIGNAL,'k');

grid;

title('预测信号与实际信号的比较');

legend('预测信号','实际信号');

当signal=sin(2*pi*0.02*[0:N-1])

①M=32

M=16

③M=64

当signal=sin(2*pi*0.01*[0:N-1])

M=32

②M=16

M=64

可以看出,LMS自适应滤波器在噪声消除方面具有很好的效果,且在信噪比较小的情况下也可以完成一定条件下的数字滤波任务,但此法仍然有许多需要改进的地方,如在信噪比较小的时候,需要滤波器的长度比较大,这样滤波器在实时处理方面受到很大限制。


相关文章

  • 基于MATLAB的高阶低通滤波器的设计与仿真
  • 论文题目: 基于MATLAB 的高阶低通滤波器的设计与仿真 目 录 前言 . ..................................................................... 3 1 滤波器 . . ...查看


  • 江苏省大学生创新训练计划项目研究总结报告
  • 附件3 江苏省大学生创新训练计划项目研究总结报告 一.项目研究背景及意义 20世纪集成电路的发展为数字音频技术提供了良好的发展空间,使数字音频技术得到了迅猛的发展.随着音频处理技术的发展,它们对音质.体积.功耗和处理速度的要求越来越苛刻,作 ...查看


  • 数字信号处理论文
  • 自适应算法变步长LMS 和RLS 的Matlab 仿真分析 摘 要 在目前的移动通信领域中, 克服多径干扰, 提高通信质量是一个非常重要的问题, 而自适应滤波器能很好的解决这个问题, 自适应滤波器的核心是自适应算法.具 体地讲述自适应算法的 ...查看


  • 基于matlab的图像边缘检测算法研究
  • 本科毕业设计(论文) 检测算法研究 学 院:信息工程学院 专 业:自动化 学 号: 学生姓名: 指导教师: 二○一 年 五月 二十三日 题 目:基于matlab 的图像边缘 基于matlab 的图像边缘检测算法研究 摘要 图像的边缘检测技术 ...查看


  • 毕业论文图像处理噪声方法与研究
  • 长 治 学 院 2013届学士学位毕业论文 图像处理中消除噪声的方法研究 学 号: 09407205 姓 名: 程晓满 指导教师: 上官晋太 专 业: 计算机科学与技术 系 别: 计算机 完成时间:2013年5月 图像处理中消除噪声的方法研 ...查看


  • 数字图像去噪典型算法仿真与分析
  • 数字图像去噪典型算法仿真与分析 个人信息********* 摘要:图像去噪是数字图像处理中的重要环节和步骤.本文首先介绍了常见的图像噪声:然后,在介绍图像去噪的基本方法和原理的基础上,讨论了均值滤波.中值滤波和维纳滤波三种典型的图像去噪方法 ...查看


  • 数字图像处理论文
  • 数字图像处理 姓名: 学号:120402053 班级:物联网121 [摘 要]图像增强是数字图像的预处理,对图像整体或局部特征能有效地改善. 我们讨论了基于直方图的均衡化和规定化处理的图像增强技术基本原理,给出了相关推导公式和算法:同时,以 ...查看


  • 毕业论文-基于MATLAB的数字图像处理
  • 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务.数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术.数字 ...查看


  • 片机的电磁阀信号数字滤波算法实现
  • 电子测量技术 ELECTRoNlC 第31卷第10期2008年10月 MEASUREM[ENTTECHNOLoGY 基于JN5121单片机的电磁阀信号数字滤波算法实现 张志利 郭进军 西安710025) (第二炮兵工程学院兵器发射理论与技术 ...查看


热门内容