基于MATLAB的FIR滤波器的设计及应用(信号去噪)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理课程设计报告书
课题名称
基于MATLAB 的FIR 滤波器的设计
及应用(信号去噪)
姓 名 陈君诚 学 号 20106503 院、系、部 电气工程系 专 业 电子信息工程
指导教师
刘鑫淼
2013年 6月28日
※※※※※※※※※ ※※ ※※ ※※
※
※※
※
※
※※※※
2010级数字信号处理 课程设计
基于MATLAB 的FIR 滤波器的设计及应用(信号去噪)
20106503 陈君诚
一、设计目的
1.学会MATLAB 的使用,掌握MATLAB 的程序设计方法; 2.掌握数字信号处理的基本概念、基本理论和基本方法; 3. 在MATLAB 环境下产生噪声信号;
4.掌握MATLAB 设计FIR 数字滤波器的窗函数设计方法; 5.学会用MATLAB 对信号进行分析和处理。
二、设计要求
1.噪声信号的频谱分析
2.设计数字滤波器和画出频率响应
利用窗函数的方法和最佳逼近法设计FIR 滤波器;最后,利用MATLAB 中的函数freqz 画出各滤波器的频率响应。
3.用滤波器对噪声信号进行滤波
4.比较几种滤波器去滤波前后噪声信号的波形及频谱
三、设计原理
3.1 窗函数设计原理
如果所希望的滤波器的理想的频率响应函数为()ωj e H ,则其对应的单位脉冲相应为:
()()
ωπ
ω
ωππd e e H n h j j d d ⎰-=21 (3.1) 窗函数设计法的基本原理是用有限长单位脉冲响应序列()n h 逼近()n h d 。
由于()n h d 往往是无限长序列,而且是非因果的,所以用窗函数()n ω将()n h d 截断,
并进行加权处理,得到:
()()()n n h n h d ω= (3.2)
()n h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数()ωj e H 为
()()n
j N n j e
n h e
H ωω
∑-==1
(3.3)
式中,N 为所选窗函数()n ω的长度。
由此可知,用窗函数法设计的滤波器性能取决于窗函数()n ω的类型及窗口长度N 的取值。
设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。
各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见表1。
表1 各种窗函数的基本参数
这样选定窗函数类型和长度N 之后,求出单位脉冲响应()()()n n h n h d ω•=,并按照式(3.3)求出()ωj e H 。
()ωj e H 是否满足要求,要进行演算。
一般在()n h 尾
部加零使长度满足2的整数次幂,以便用FFT 计算()ωj e H 。
如果要观察细节,补零点数增多即可。
如果()ωj e H 不满足要求,则要重新选择窗函数类型和长度N ,再次验算,直至满足要求。
3.2 最佳逼近法
等波纹最佳逼近法是一种优化设计法,它克服了窗函数设计法和频率采样法的缺点,使最大误差(即波纹的峰值)最小化,并在整个逼近频段上均匀分布。
用等波纹最佳逼近法设计的FIR 数字滤波器的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度。
这就是等波纹的含义。
最佳逼近是指在滤波器长度给定的条件下,使加权误差波纹幅度最小化。
与窗函数设计法和频率采样法比较,由于这种设计法使滤波器的最大逼近误差均匀分布,所以设计的滤波器性能价格比最高。
阶数相同时,这种设计法使滤波器的最大逼近误差最小,即通带最大衰减最小,阻带最小衰减最大;指标相同时,这种设计法使滤波器阶数最低。
如果要求线性相位特性,则()n h 还必须满足
()()n N h n h --±=1 (3.4) 根据上式中的正、负号和长度N 的奇偶性又将线性相位FIR 滤波器分成四类。
要根据所设计的滤波特性正确选择其中一类,例如,要设计线性相位低通特性,可以选择()()n N h n h --=1这一类,而不能选择()()n N h n h ---=1这一类。
四、主程序框图
图4.1 主程序框图
五、程序设计
function xt=xtg;
N=1000;
Fs=1000;T=1/Fs;Tp=N*T;
t=0:T:(N-1)*T;fc=Fs/10;f0=fc/10;
mt=cos(2*pi*f0*t);
ct=cos(2*pi*fc*t);
xt=mt.*ct; % 相成产生单频调幅信号nt=2*rand(1,N)-1; % 产生随机噪声
subplot(4,4,1);plot(t,xt);title('未加噪声的信号')
%设计高通滤波器hn,用于滤除噪声nt中的低频成分,生成高通噪声
fp=150;fs=200;Rp=0.1;As=70;
fb=[fp,fs];m=[0,1];
dev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];
[n,fo,mo,W]=remezord(fb,m,dev,Fs);
hn=remez(n,fo,mo,W);
yt=filter(hn,1,10*nt); %滤除随机噪声中低频成分,生成高通噪声yt xt=xt+yt; %噪声加信号
fst=fft(xt,N);k=0:N-1;f=k/Tp;
subplot(4,4,2);plot(t,xt);grid;xlabel('t/s');ylabel('x(t)');
axis([0,Tp/5,min(xt),max(xt)]);
title('(a) 信号加噪声波形'); % 去噪声之前的波形及频谱
subplot(4,4,3);plot(f,abs(fst)/max(abs(fst)));grid;title('(b)信号加噪声的频谱'); axis([0,Fs/2,0,1.2]);
xlabel('f/Hz');ylabel('幅度');
N=1000;
Fs=1000;
rp=0.1;rs=60; %rp通带最大衰减,rs阻带最小衰减
fp1=120;fs1=150; %fp1通带截止频率,fs1阻带截止频率
wp1=0.24*pi;ws1=0.3*pi; %指标参数赋值
B1=2*pi*(fs1-fp1)/Fs; %过渡带宽度
N0=ceil(11*pi/B1); %计算阶数N0,ceil(x)为大于等于x的最小整数wc1=(wp1+ws1)/(2*pi); %设计理想低通截止频率
hn1=fir1(N0-1,wc1,blackman(N0)); %低通滤波器的产生
subplot(4,4,9);plot(hn1);title('hn1波形');grid on;
[H1,W]=freqz(hn1,1000);
subplot(4,4,10);plot(W/pi,20*log10(abs(H1)));title('频率响应H1');grid on;
Hw=abs(fft(hn1,1024));
yn1=fftfilt(hn1,xt,N);
subplot(4,4,5);plot(yn1);title('窗函数法滤波后的噪声信号波形');
fst1=fft(yn1,N);k=0:N-1;f=k/Tp;
subplot(4,4,6);plot(f,abs(fst1)/max(abs(fst1)));grid;
title('窗函数法信号去噪声的频谱');
m1=abs(H1);
subplot(4,4,11);
plot(W/pi,20*log10(m1/max(m1)));grid on;
xlabel('\omega/\pi');ylabel('幅度(dB)');
axis([0,1,-80,5]);title('损耗函数1');
%等波纹最佳逼近法设计fir滤波器
Fs=1000;
f=[120,150];
m=[1,0];
dat1=(10^(rp/20)-1)/(10^(rp/20)+1);
dat2=10^(-rs/20);
rip=[dat1,dat2];
[N1,f0,m0,w]=remezord(f,m,rip,Fs);
hn2=remez(N1,f0,m0,w);
subplot(4,4,13);plot(hn2);title('hn2波形');
[H2,W]=freqz(hn2);
subplot(4,4,14);plot(W/pi,20*log10(abs(H2)));title('频率响应H2');grid on;
Hw=abs(fft(hn2,1024));
yn2=fftfilt(hn2,xt,N);
subplot(4,4,7);plot(yn2);title('最佳逼近法滤波后噪声信号波形');
fst2=fft(yn2,N);k=0:N-1;f=k/Tp;
subplot(4,4,8);plot(f,abs(fst2)/max(abs(fst2)));grid;
title('最佳逼近法滤波后噪声信号频谱');
[H2,W]=freqz(hn2,1000);
m2=abs(H2);
subplot(4,4,15);
plot(W/pi,20*log10(m2/max(m2)));grid on;
xlabel('\omega/\pi');ylabel('幅度(dB)');
axis([0,1,-80,5]);title('损耗函数2');
六、仿真结果及分析
图6.1 低通滤波器的波形及频率响应
此图为窗函数法和等波纹最佳逼近法低通滤波器的波形及频率响应和损耗函数
在将加噪信号滤波之后,我们将滤波前后信号的波形相互比较。
在同一张大图里分别绘制原信号波形(a),加噪信号波形(b),窗函数法滤波去噪信号波形(d),最佳逼近法滤波后去噪信号波形(e),以便比较和分析。
如图6.2所示:
图6.2 滤波前后信号的波形
原信号与滤波去噪信号的时域图基本相似,只有边缘部分有点差异;通过观察可以看到,加噪信号的时域图中大部分都被加入的噪声给遮盖了,在将三个信号的时域波形比较之后,发现等波纹最佳逼近法的去噪效果更好一些。
七、设计总结
FIR滤波器的设计方法主要分为两类:第一类是基于逼近理想滤波器器特性的方法包括窗函数法、频率采样法、和等波纹最佳逼近法;第二类是最优设计法。
本文设计主要采用的是第一类设计方法,是利用布莱克曼窗函数法设计FIR滤波器对一段信号进行滤波去噪,通过这一过程,对滤波前后波形进行对比分析得到结论。
此课程设计比较简单,主要是将书本中的知识运用到现实中,并且根据自己对设计题目的理解,运用软件编写出程序实现这一设计,也是我们对数字信号处理的原理进行验证的一个过程。
经过这次课程设计,我不仅在数字信号处理方面学到了更多的知识,并且在滤波器设计及MATLAB软件应用方面有了比较大的提高。
数字信号处理对于我们专业很重要,它要求在一定的理解和计算的基础上掌握其内容,领悟其要旨。
小学期的实践尤为重要,在掌握一定的理论知识的基础上通过实践加深理解,使得理论知识的学习在实践之中得到升华。
通过本次实验还认识到自己所学知识的不足,对MATLAB的功能还需进一步学习,同时也要加强数字信号方面相关知识的学习。
八、参考文献
[1] 董长虹等.MA TLAB信号处理与应用.北京:国防工业出版社,2005
[2] 张葛祥,李娜.MATLAB仿真技术与应用.北京:清华大学出版社,2003
[3] 楼顺天,李博菡.基于MATLAB的系统分析与设计.西安:西安电子科技大学出版社,1998。