自适应陷波器课程设计
齐鲁工业大学
课程设计任务书
学院
姓名
题目
主要内容:
在通信系统和电子系统中,经常会受到诸如50Hz 工作频率等单频或窄带干扰的影响。这种干扰的存在,严重影响了信号接收或检测的可靠性和正确性,需要采用自适应信号陷波器消除此干扰。当自适应噪声抵消系统的参考输入为单一频率正弦信号时,则系统可以构成自适应信号陷波器。本设计主要内容是在掌握自适应滤波器原理的基础上,设计一个陷波器,从宽带滤去单一音频信号干扰。电气工程与自动化学院班级专业通信工程学号自适应陷波器设计
基本要求:
(1)自适应滤波的原理,LMS 算法的原理;(2)设计一个50Hz 的陷波器;给出原理框图;用多频信号(含有50Hz 干扰)作为输入,50Hz 正弦波和与余弦波作为参考输入;输出为滤去50Hz 单频干扰之后的信号;(3)根据误差分析陷波器的性能,对结果进行分析;(5)提交课程设计报告。
主要参考资料:
1. 胡广书. 现代信号处理教程. 清华大学出版社. 2005.06
2. 高西全. 数字信号处理. 西安电子科技大学出版社. 2009.01
3. matlab 信号处理相关书籍
4. 相关网络资源685
5. http://book.csdn.net/bookfiles/734/[1**********].shtml
完成期限:自2017年
指导教师:张凯丽6月25日至2017年6教研室主任:月30日
摘要
在通信系统和电子系统中,经常会遇到受到单频或窄带干扰信号影响的问题.由于其他信号干扰的存在,对有用信号接收或检测的可靠性和正确性影响极大,通常的做法是采用自适应信号陷波器来消除此类干扰.在具体实践中,常在自适应噪声抵消系统的参考输入端输入单一频率的正弦信号,此时的系统实际就构成了自适应陷波器.自适应滤波器的工作机制是以最小均方误差为基准的最佳过滤器,在滤波程中,它根据干扰信号而自动调整滤波因子,使输出信号的误差为最小,从而获得最佳的滤波效果.自适应滤波器通常采用LMS算法,算法简单、计算量小、响应速度快,特别适合于对实时信号要求较高的场合,已经广泛应用于语音信号处理、噪声抵消、系统模型识别和医学信号处理等领域.本文将说明自适应滤波器在噪声抵消方面作为陷波器使用的基本工作原理,并给出一种简单、有效的自适应滤波器.
关键词:一般陷波器;自适应陷波器;LMS算法;自适应干扰对消
一.课程设计的主要内容与基本要求:................................................................................. 1
1.1主要内容....................................................................................................................... 1
1.2基本要求....................................................................................................................... 1
二.课程设计的基本原理:................................................................................................... 2
2.1自适应算法的原理...................................................................................................... 2
2.2陷波滤波器的原理...................................................................................................... 3
三.课程设计的步骤............................................................................................................... 4
四.实验结果的分析............................................................................................................... 6
五.结论................................................................................................................................... 6
六.结束语................................................................................................................................. 6
七.心得体会............................................................................................................................. 7参考文献:................................................................................................................................. 8附录:......................................................................................................................................... 9
一.课程设计的主要内容与基本要求:
1.1主要内容
在通信系统和电子系统中,经常会受到诸如50Hz 工作频率等单频或窄带干扰的影响。这种干扰的存在,严重影响了信号接收或检测的可靠性和正确性,需要采用自适应信号陷波器消除此干扰。当自适应噪声抵消系统的参考输入为单一频率正弦信号时,则系统可以构成自适应信号陷波器。本设计主要内容是在掌握自适应滤波器原理的基础上,设计一个陷波器,从宽带滤去单一音频信号干扰。
方案的选择:
其中x(k)是带有特定频率干扰的信号,也即输入的原始信号,可见它是从自适应滤波器的期望信号端输入的;而sin(2πf0/fsk)和cos(2πf0/fsk),是我们已知的频率为f0的干扰信号(其中fs 是采样率),将它们分别乘以W1和W2进行适当的线性组合,就可以使其输出y(k)接近实际的干扰,最后输出的误差e(k)就是我们感兴趣的信号。如何进行W1和W2的选择这其实是自适应算法需要完成的工作,具体来说就是采用某种准则来构建一个关于误差e(k)的函数,通过是误差e(k)最小化来求得W1和W2,最常用的准则就是使误差的均方和最小。
1.2基本要求
(1)自适应滤波的原理,LMS算法的原理;(2)设计一个50Hz 的陷波器;给出原理框图;用多频信号(含有50Hz 干扰)作为输入,50Hz正弦波和与余弦波作为参考输入;输出为滤去50Hz 单频干扰之后的信号;(3)根据误差分析陷波器的性能,对结果进行分析;(5)提交课程设计报告。
二.课程设计的基本原理:
2.1自适应算法的原理
1. 一般梯度估值的自适应算法,需要分别取权值经扰动后的两个均方误差估值之差作为梯度的估值。LMS算法(LeastMean Square,即最小均方算法)避免了一般梯度估值带来的弊端,它简单地直接利用单次采样数据误差的平方e2(n)替代E !e (2k)"的估计。于是其自适应过程每次迭代中最简单的LMS 算法是通过每一次迭代输入的数据对当前的目标函数的梯度进行估计,从而得到相应输入信号的自相关矩阵R 与互相关向量p。则得到的梯度估计值为:
gw(k)=-2p(k)+2R(k)w(k)=2x(k)(-d(k)+w(k)(k))=-2e(k)x(k)
则滤波系数更新方程为:w(k+1)=w(k)+2niu*e(k)x(k)
整理可得LMS 算法:
初始化部分:
w(k)=[00…0]T
单次迭代部分:
e(k)=d(k)-w(k)(k)
w(k+1)=w(k)+2niu*e(k)x(k)
其中niu 参数表示单次调节的步长,是一个常数需要在实际的应用中进行确定。我们可以得到单次迭代所需要进行的乘法次数为O[N]量级,N 表示FIR 滤波器的系数矢量w(k)的维数,该算法已经具有一定的实际应用的价值,如果对滤波的精度要求不是很
高,而且对每次迭代速度有很高的要求的话,此算法非常合适。
2.2陷波滤波器的原理
2.陷波器顾名思义就是对特定频率的信号有着很强的衰减的滤波器,也即阻带带宽极窄的带阻滤波器。在传统的数字陷波器设计中,为了能使某一频率信号得到足够大的衰减,通常的做法就是把阶数选的足够高来达到很大的衰减;但同时计算量也变得更大了。而且设计的过程复杂,不利于动态的调整。为了解决上述存在的问题自适应陷波器孕育而生。当我们知道原始信号里的干扰信号频率是多少时(例如最常见的50Hz 工频干扰),这时我们只需要知道这个干扰信号的相位和幅度,然后就可以完全的“再现”这个干扰信号,然后我们就可以直接的从原始信号中将其减去,从而就得到了我们想要的信号成分。这一过程实际上就是自适应陷波器的基本工作原理。
下面图示的框图是最小均方滤波器(LMS)和递归最小平方(en:Recursiveleast squares filter,RLS,即我们平时说的最小二乘法)这些特殊自适应滤波器实现的基础。
框图的理论基础是可变滤波器能够得到所要信号的估计。
在开始讨论结构框图之前,我们做以下假设:
输入信号是所要信号
x(n)=d(n)+v(n)
可变滤波器有有限脉冲响应结构,这样结构的脉冲响应等于滤波器系数。p 阶滤波器的系数定
义为
d(n)和干扰噪声v(n)之和
误差信号或者叫作代价函数,是所要信号与估计信号之差
可变滤波器通过将输入信号与脉冲响应作卷积估计所要信号,用向量表示为
其中
t
是输入信号向量。另外,可变滤波器每次都会马上改变滤波器系数
自适应算法根据输入信号与误差信号生成这个校正因子,LMS 和RLS 是两种不同的系数更新
算法。
自适应滤波器的结构有横向滤波器和格型结构,用自适应横向滤波器实现陷波,比较简单且易于实现,而格型滤波器的计算复杂,不易于实际运用。故本设计中选择横向滤波器结构。对LMS 算法,进行了仿真实验。
三.课程设计的步骤
1.原始语音信号的生成:
Fs =500;
t =0:1/Fs:3;
t =t';
Size_t=size(t,1);
F1=7;
F2=13;
F3=23;
F4=50;
SNR =-100; %信干比Unit:dB
Signal =10^(SNR/20)*(sin(2*pi*F1*t)+0.5*sin(2*pi*F2*t)+
0.25*sin(2*pi*F3*t));
%生成信号%设置采样频率
2.加入噪声信号:
noise =0.95*sin(2*pi*F4*t+pi/2);
Signal_noise=Signal +noise;
干扰%加入50Hz 工频
3.自适应滤波算法处理
M =2; %定义FIR 滤波器阶数
Signal_Len=Size_t;%定义信号数据的个数
niu =1; %算法调节步长控制因子
y_out=zeros(Signal_Len,1);%滤波器输出
error_out=zeros(Signal_Len,1);%误差输出
w_out=zeros(Signal_Len,M);%系数输出
for i=1:Signal_Len
%数据输入
if i ==1%如果是第一次进入
w =zeros(M,1);%初始化滤波器抽头系数
x =zeros(M,1);%初始化信号向量
end
d =Signal_noise(i);
x =[sin(2*pi*F4*(i-1)/Fs)
cos(2*pi*F4*(i-1)/Fs)];
%算法正体
y =x' *w;
error =d -y;
w_forward=w +niu *error *x;
%变量更替
w =w_forward;
%滤波结果存储
y_out(i)=y;
error_out(i)=error;
w_out(i,:)=w';
end %输入新的期望信号%输入新的信号矢量%计算滤波器输出%计算误差%计算滤波器系数向量
四.实验结果的分析
在算法仿真中,自适应滤波器的原始输入端的输入信号为一多频信号,50Hz 正弦波和与余弦波作为参考输入.
仿真结果表明:通过LMS算法使线性组合器的权系数得到自适应调整,自适应陷波器工作中能实时较好地输出原始输入的正弦信号.而且明显体现出当迭代次数增加时,输出的正弦信号中误差极小并趋于零,实现了消除干扰素的目的,满足设计的要求。
五.结论
在滤波程中,它根据干扰信号而自动调整滤波因子,使输出信号的误差为最小,从而获得最佳的滤波效果.自适应滤波器通常采用LMS算法,算法简单、计算量小、响应速度快,
六.结束语
在通常的滤波场合中,从频域的角度进行滤波,其相关的理论已经相当的成熟,只要给出相应的设计指标就可以很方便的设计出满足要求的滤波器。然而在更一般的情况下,人们所需要的滤波器工作的环境是时变的,这就导致事先已经设计好的滤波器性能下降甚至不能被使用。例如,在水下声纳通信中,信息通过声波在水中进行传播到达接收端,其信道是时变的(这种情况比电磁波在空气中传播要严重的多),如果只是简单的用固定系数的滤波器对信道进行均衡,那么得到的结果往往难以令人满意。解决的办法之一就是利用自适应滤波器,让其时实的跟踪信道的特性然后不断的调整均衡器的参数使其保持在最优的状态。再比如,我们日常使用的扩音设备,如果不注意将麦克风和喇叭靠的太近则会产生令人厌烦的啸叫声,采用自适应滤波技术将能有效的避免这种情况。自适应滤波器目前已经广泛应用到了通信和电子系统等众多领域.在消除噪声方面,由自适应滤波器构成的自适应陷波器不仅能准确捕捉干扰信号的频率,容易控制其带宽;而且算法简单,实时性强,陷波效果良好.在多频率噪声信号干扰的情况下,采用级联型结构的自适应陷波器相比并联型结构更有优势,更易准确地调整、控制,在复杂干扰时得到了很好的应用.利用MATLAB 的强大运算功能,基于MATLAB 信号处理工具箱(SignalProcessing Toolbox)的数字滤波器设计法可以快速有效的设计由软件组成的常规数字滤波器,设计方便、快捷,极大的减轻了工作量,缩短了滤波器的开发周期。在设计过程中可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化。该滤波器能够很好地滤除50Hz 工频干扰。且该滤波器结构简单、占用资源少、滤波效果好,非常适
用于嵌入式便携设备中的信号滤波。与其它方法相比较,本方法具有原理简单,计算量小,对信号中的有用成份影响极小,经它处理后的信号不会产生相位失真等优点。
七.心得体会
在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,否则,在老师讲解时就会听不懂,这将使你在做实验时的难度加大,浪费做实验的宝贵时间。如果你不清楚实验原理,在做实验时才去摸索,这将使你极大地浪费时间,使你事倍功半.做实验时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,实验后,还要复习,思考,这样,你的印象才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这还不如不做.做实验时,老师还会根据自己的亲身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在生活中的应用是那么的广泛.通过这次测试技术的实验,使我学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我们受益匪浅.我们做实验绝对不能人云亦云,要有自己的看法,这样我们就要有充分的准备,若是做了也不知道是个什么实验,那么做了也是白做。实验总是与课本知识相关的,就必须回顾课本的知识,知道实验时将要测量什么物理量,写报告时怎么处理这些物理量。
参考文献:
1.胡广书.现代信号处理教程.清华大学出版社.2005.06
2.高西全.数字信号处理.西安电子科技大学出版社.2009.01
3.matlab 信号处理相关书籍
4.相关网络资源
5.http://book.csdn.net/bookfiles/734/[1**********].shtml
6.http://blog.csdn.net/HJ[1**********]5/article/details/71527011?locationNum=2&fps=1
附录:
clc;
clear all;
close all;
%%
%************************生成仿真信号**************************************Fs =500; %设置采样频率t =0:1/Fs:3;
t =t';
Size_t=size(t,1);
F1=7;
F2=13;
F3=23;
F4=50;
SNR =-100; %信干比Unit:dB
Signal =10^(SNR/20)*(sin(2*pi*F1*t)+0.5*sin(2*pi*F2*t)+
0.25*sin(2*pi*F3*t));%生成信号
noise =0.95*sin(2*pi*F4*t+pi/2);
Signal_noise=Signal +noise;
干扰%加入50Hz 工频
%%
%*************************************************************************M =2; %定义FIR 滤波器阶数
Signal_Len=Size_t;%定义信号数据的个数
niu =1; %算法调节步长控制因子
y_out=zeros(Signal_Len,1);%滤波器输出
error_out=zeros(Signal_Len,1);%误差输出
w_out=zeros(Signal_Len,M);%系数输出
for i=1:Signal_Len
%数据输入
if i ==1%如果是第一次进入
w =zeros(M,1);%初始化滤波器抽头系数
x =zeros(M,1);%初始化信号向量
end
d =Signal_noise(i);
x =[sin(2*pi*F4*(i-1)/Fs)
cos(2*pi*F4*(i-1)/Fs)];
%算法正体
y =x' *w;
error =d -y;
w_forward=w +niu *error *x; %输入新的期望信号%输入新的信号矢量%计算滤波器输出%计算误差%计算滤波器系数向量
%变量更替
w =w_forward;
%滤波结果存储
y_out(i)=y;
error_out(i)=error;
w_out(i,:)=w';
end
%%
subplot(2,1,1);
plot(t,Signal);
title('原始信号');
xlabel('时间t/s');
subplot(2,1,2);
plot(t,Signal_noise);
title('加入干扰噪声的信号');
xlabel('时间t/s');
figure;
subplot(2,1,1);
plot(t,y_out);
title('滤波器输出');
xlabel('时间t/s');
subplot(2,1,2);
plot(t,error_out,'b');
title('输出');
xlabel('时间t/s');
axis([0,3,-3*10^-5,3*10^-5]);
figure;
plot(t(1:Signal_Len),w_out(1),'r',t(1:Signal_Len),w_out(2),'b');title('自适应滤波器系数');
xlabel('时间t/s');