MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序_第1页
MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序_第2页
MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序_第3页
MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序_第4页
MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB课程设计报告学 院:地球物理与石油资源学院 班 级: 测井(基)11001 姓 名: 大牛啊啊啊 学 号: 班内编号: 指导教师: 陈义群 完成日期: 2013年6月3日 一、 题目 FIR滤波器的窗函数设计法及性能比较1. FIR滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR滤波器相比,FIR滤波器的主要特点为:a. 线性相位;b.非递归运算。2. FIR滤波器的设计FIR滤波器的设计方法主要有三种:a.窗函数

2、设计法;b.频率抽样发;c.最小平法抽样法;这里我主要讨论在MATLAB环境下通过调用信号分析与处理工具箱的几类窗函数来设计滤波器并分析与比较其性能。窗函数法设计FIR滤波器的一般步骤如下:a. 根据实际问题确定要设计的滤波器类型;b. 根据给定的技术指标,确定期望滤波器的理想频率特性;c. 求期望滤波器的单位脉冲响应;d. 求数字滤波器的单位脉冲响应;e. 应用。常用的窗函数有 4. 常用窗函数的参数5. FIR滤波器的MATLAB实现方式在MATLAB信号分析与处理工具箱中提供了大量FIR窗函数的设计函数,本次用到主要有以下几种:hanning(N) hanning窗函数的调用hammin

3、g(N) hamming窗函数的调用blackman(N) blackman窗函数的调用kaiser(n+1,beta) kaiser窗函数的调用kaiserord 计算kaiser窗函数的相关参数freqz 求取频率响应filter 对信号进行滤波的函数6. 实验具体步骤本次实验分别通过调用hanning ,hamming ,Blackman,kaiser窗函数,给以相同的技术参数,来设计低通,带通,高通滤波器,用上述窗函数的选择标准来比较各种窗函数的优劣,并给以一个简谐波进行滤波处理,比较滤波前后的效果。达到综合比较的效果。二、源代码 1.利用hanning hamming blackma

4、n kaiser窗,设计一个低通FIRfunction lowpassfilterclc;clear all;Fs=100;%采样频率fp=20;%通带截止频率fs=30;%阻带起始频率wp=2*pi*fp/Fs;%将模拟通带截止频率转换为数字滤波器频率ws=2*pi*fs/Fs;%将模拟阻带起始频率转换为数字滤波器频率wn=(wp+ws)/2/pi;%标准化的截止频率响应Bt=ws-wp;N0=ceil(6.2*pi/Bt);%滤波器长度N=N0+mod(N0+1,2);window1=hanning(N);%使用hanning窗函数window2=hamming(N);%使用hamming

5、窗函数window3=blackman(N);%使用blackman窗函数n,Wn,beta,ftype=kaiserord(20 25,1 0,0.01 0.01,100);window4=kaiser(n+1,beta);%使用kaiser窗函数%设计加窗函数fir1b1=fir1(N-1,wn,window1);b2=fir1(N-1,wn,window2);b3=fir1(N-1,wn,window3);b4=fir1(n,Wn/pi,window4 ,'noscale');%求取频率响应H1,W1=freqz(b1,1,512,2);H2,W2=freqz(b2,1,

6、512,2);H3,W3=freqz(b3,1,512,2);H4,W4=freqz(b4,1,512,2);figure(1);subplot(2,2,1),plot(W1,20*log10(abs(H1);%绘制频率响应图形axis(0,1,-100,100);title('低通hanning窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');subplot(2,2,2),plot(W2,20*log10(abs(H2);%绘制频率响应图形axis(0,1,-100,100);title('低通hammi

7、ng窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');subplot(2,2,3),plot(W3,20*log10(abs(H3);%绘制频率响应图形axis(0,1,-100,100);title('低通blackman窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');subplot(2,2,4),plot(W4,20*log10(abs(H4);%绘制频率响应图形axis(0,1,-100,100);title('低通kaiser

8、窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');T=1/Fs;L=100;%信号长度t=(0:L-1)*T;%定义时间范围和步长y=sin(2*pi*5*t)+5*sin(2*pi*15*t)+8*sin(2*pi*40*t);%滤波前的图形NFFT = 2nextpow2(L); % Next power of 2 from length of yY = fft(y,NFFT)/L;%将时域信号变换到频域f = Fs/2*linspace(0,1,NFFT/2+1);%频域采样figure(2);plot(f,2*ab

9、s(Y(1:NFFT/2+1);xlabel('frequency/Hz');ylabel('Amuplitude') ;%滤波前频谱title('滤波前的频谱');%滤波后频谱%采用hanning窗滤波器yy1=filter(b1,1,y);%调用滤波函数YY1=fft(yy1,NFFT)/L;%进行傅里叶变换,下同。f1=Fs/2*linspace(0,1,NFFT/2+1);figure(3);subplot(2,2,1),plot(f1,2*abs(YY1(1:NFFT/2+1) ;xlabel('frequency/Hz'

10、;);ylabel('Amuplitude');title('hanning窗的滤波效果');%采用hammning窗滤波器yy2=filter(b2,1,y);YY2=fft(yy2,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1);subplot(2,2,2),plot(f1,2*abs(YY2(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');title('hamming窗的滤波效果');%采用blackman窗滤波器

11、yy3=filter(b3,1,y);YY3=fft(yy3,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1);subplot(2,2,3), plot(f1,2*abs(YY3(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');title('blackman窗的滤波效果');%采用kaiser窗滤波器yy4=filter(b4,1,y);YY4=fft(yy4,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1);subplot(

12、2,2,4),plot(f1,2*abs(YY4(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');xlabel('frequency/Hz');ylabel('Amuplitude');title('kaiser窗函数滤波效果');%滤波前后的信号的时域对比figure(4);plot(y);xlabel('时间/s');ylabel('振幅');title('滤波前振幅特性');figure(5);s

13、ubplot(2,2,1),plot(yy1);xlabel('时间/s');ylabel('振幅');title('hanning窗函数滤波振幅特性');subplot(2,2,2),plot(yy2);xlabel('时间/s');ylabel('振幅');title('hamming窗函数滤波振幅特性');subplot(2,2,3),plot(yy3);xlabel('时间/s');ylabel('振幅');title('blackman窗函数滤波振幅

14、特性');subplot(2,2,4),plot(yy4);xlabel('时间/s');ylabel('振幅');title('kaiser窗函数滤波振幅特性');%滤波前后的信号的相位对比figure(6);plot(angle(Y);xlabel('时间/s');ylabel('相位');title('滤波前的相位特性');figure(7);subplot(2,2,1),plot(angle(YY1);xlabel('时间/s');ylabel('相位'

15、;);title('hanning窗函数滤波相位特性');subplot(2,2,2),plot(angle(YY2);xlabel('时间/s');ylabel('相位');title('hamming窗函数滤波相位特性');subplot(2,2,3),plot(angle(YY3);xlabel('时间/s');ylabel('相位');title('blackman窗函数滤波相位特性');subplot(2,2,4),plot(angle(YY4);xlabel('时

16、间/s');ylabel('相位');title('kaiser窗函数滤波相位特性');2.设计一个hanning hamming blackman kaiser窗函数bandpass_FIR%设计一个hanning hamming blackman kaiser窗函数bandpass_FIRfunction bandpassfilterFs=100;%采样频率fp1=15;%通带下限截止频率fp2=20;%通带上限截止频率fs1=10;fs2=25;wp1=2*pi*fp1/Fs;%将通带下限截止频率转换为数字滤波器频率wp2=2*pi*fp2/Fs;

17、%将通带上限截止频率转换为数字滤波器频率ws1=2*pi*fs1/Fs;%将通带下限截止频率转换为数字滤波器频率ws2=2*pi*fs2/Fs;%将通带上限截止频率转换为数字滤波器频率Bt=wp1-ws1;N0=ceil(6.2*pi/Bt);N=N0+mod(N0+1,2);wn=(wp1+ws1)/2/pi,(wp2+ws2)/2/pi;window1=hanning(N);%使用hanning窗函数window2=hamming(N);%使用hamming窗函数window3=blackman(N);%使用blackman窗函数%设过渡带宽度为5Hzn,Wn,beta,ftype=kai

18、serord(10 15 20 25,0 1 0,0.01 0.01 0.01,100);%求阶数n以及参数betawindow4=kaiser(n+1,beta);%使用kaiser窗函数%设计加窗函数fir1b1=fir1(N-1,wn,window1);b2=fir1(N-1,wn,window2);b3=fir1(N-1,wn,window3);b4=fir1(n,Wn,window4,'noscale');%求取频率响应H1,W1=freqz(b1,1,512,2);H2,W2=freqz(b2,1,512,2);H3,W3=freqz(b3,1,512,2);H4,

19、W4=freqz(b4,1,512,2);figure(1);subplot(2,2,1),plot(W1,20*log10(abs(H1);%绘制频率响应图形axis(0,1,-100,100);title('带通hanning窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');subplot(2,2,2),plot(W2,20*log10(abs(H2);%绘制频率响应图形axis(0,1,-100,100);title('带通hamming窗的频率响应图形');xlabel('频率(Hz

20、)');ylabel('幅值');subplot(2,2,3),plot(W3,20*log10(abs(H3);%绘制频率响应图形axis(0,1,-100,100);title('带通blackman窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');subplot(2,2,4),plot(W4,20*log10(abs(H4);%绘制频率响应图形axis(0,1,-100,100);title('带通kaiser窗的频率响应图形');xlabel('频率(Hz)&

21、#39;);ylabel('幅值');T=1/Fs;L=100;%信号长度t=(0:L-1)*T;%定义时间范围和步长y=sin(2*pi*5*t)+5*sin(2*pi*15*t)+8*sin(2*pi*40*t);%滤波前的图形NFFT = 2nextpow2(L); % Next power of 2 from length of yY = fft(y,NFFT)/L;%将时域信号变换到频域f = Fs/2*linspace(0,1,NFFT/2+1);%频域采样figure(2);plot(f,2*abs(Y(1:NFFT/2+1);xlabel('freque

22、ncy/Hz');ylabel('Amuplitude') ;%滤波前频谱title('滤波前的频谱');%滤波后频谱%采用hanning窗滤波器yy1=filter(b1,1,y);%调用滤波函数YY1=fft(yy1,NFFT)/L;%进行傅里叶变换,下同。f1=Fs/2*linspace(0,1,NFFT/2+1);figure(3);subplot(2,2,1),plot(f1,2*abs(YY1(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');ti

23、tle('hanning窗的滤波效果');%采用hammning窗滤波器yy2=filter(b2,1,y);YY2=fft(yy2,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1);subplot(2,2,2),plot(f1,2*abs(YY2(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');title('hamming窗的滤波效果');%采用blackman窗滤波器yy3=filter(b3,1,y);YY3=fft(yy3,NFF

24、T)/L;f1=Fs/2*linspace(0,1,NFFT/2+1);subplot(2,2,3), plot(f1,2*abs(YY3(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');title('blackman窗的滤波效果');%采用kaiser窗滤波器yy4=filter(b4,1,y);YY4=fft(yy4,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1);subplot(2,2,4),plot(f1,2*abs(YY4(1:NFFT/2+

25、1) ;xlabel('frequency/Hz');ylabel('Amuplitude');xlabel('frequency/Hz');ylabel('Amuplitude');title('kaiser窗函数滤波效果');%滤波前后的信号的时域对比figure(4);plot(y);xlabel('时间/s');ylabel('振幅');title('滤波前振幅特性');figure(5);subplot(2,2,1),plot(yy1);xlabel(

26、9;时间/s');ylabel('振幅');title('hanning窗函数滤波振幅特性');subplot(2,2,2),plot(yy2);xlabel('时间/s');ylabel('振幅');title('hamming窗函数滤波振幅特性');subplot(2,2,3),plot(yy3);xlabel('时间/s');ylabel('振幅');title('blackman窗函数滤波振幅特性');subplot(2,2,4),plot(yy4);

27、xlabel('时间/s');ylabel('振幅');title('kaiser窗函数滤波振幅特性');%滤波前后的信号的相位对比figure(6);plot(angle(Y);xlabel('时间/s');ylabel('相位');title('滤波前的相位特性');figure(7);subplot(2,2,1),plot(angle(YY1);xlabel('时间/s');ylabel('相位');title('hanning窗函数滤波相位特性'

28、;);subplot(2,2,2),plot(angle(YY2);xlabel('时间/s');ylabel('相位');title('hamming窗函数滤波相位特性');subplot(2,2,3),plot(angle(YY3);xlabel('时间/s');ylabel('相位');title('blackman窗函数滤波相位特性');subplot(2,2,4),plot(angle(YY4);xlabel('时间/s');ylabel('相位');tit

29、le('kaiser窗函数滤波相位特性');3.分别设计hanning hamming blackman kaiser窗函数highpass_FIRfunction highpassfilterclc;clear all;Fs=100;%采样频率fs=35;%高通阻带模拟截止频率fp=40;%高通通带模拟起始频率ws=2*pi*fs/Fs;wp=2*pi*fp/Fs;wn=(wp+ws)/2/pi;Bt=wp-ws;N0=ceil(55*pi/Bt);N=N0+mod(N0+1,2);%调用窗函数window1=hanning(N);window2=hamming(N);win

30、dow3=blackman(N);n,Wn,beta,ftype=kaiserord(35,40,0 1,0.01 0.01,100);window4=kaiser(n+1,beta);%设计加窗函数fir1b1=fir1(N-1,wn,'high',window1);b2=fir1(N-1,wn,'high',window2);b3=fir1(N-1,wn,'high',window3);b4=fir1(n,Wn,'high',window4 ,'noscale');%求取频率响应H1,W1=freqz(b1,1

31、,512,2);H2,W2=freqz(b2,1,512,2);H3,W3=freqz(b3,1,512,2);H4,W4=freqz(b4,1,512,2);figure(1);subplot(2,2,1),plot(W1,20*log10(abs(H1);%绘制频率响应图形axis(0,1,-100,100);title('高通hanning窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');subplot(2,2,2),plot(W2,20*log10(abs(H2);%绘制频率响应图形axis(0,1,-10

32、0,100);title('高通hamming窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');subplot(2,2,3),plot(W3,20*log10(abs(H3);%绘制频率响应图形axis(0,1,-100,100);title('高通blackman窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');subplot(2,2,4),plot(W4,20*log10(abs(H4);%绘制频率响应图形axis(0,1,-100

33、,100);title(' 高通kaiser窗的频率响应图形');xlabel('频率(Hz)');ylabel('幅值');T=1/Fs;L=100;%信号长度t=(0:L-1)*T;%定义时间范围和步长y=sin(2*pi*5*t)+5*sin(2*pi*15*t)+8*sin(2*pi*40*t);%滤波前的图形NFFT = 2nextpow2(L); % Next power of 2 from length of yY = fft(y,NFFT)/L;%将时域信号变换到频域f = Fs/2*linspace(0,1,NFFT/2+1);

34、%频域采样figure(2);plot(f,2*abs(Y(1:NFFT/2+1);xlabel('frequency/Hz');ylabel('Amuplitude') ;%滤波前频谱title('滤波前的频谱');%滤波后频谱%采用hanning窗滤波器yy1=filter(b1,1,y);%调用滤波函数YY1=fft(yy1,NFFT)/L;%进行傅里叶变换,下同。f1=Fs/2*linspace(0,1,NFFT/2+1);figure(3);subplot(2,2,1),plot(f1,2*abs(YY1(1:NFFT/2+1) ;xl

35、abel('frequency/Hz');ylabel('Amuplitude');title('hanning窗的滤波效果');%采用hammning窗滤波器yy2=filter(b2,1,y);YY2=fft(yy2,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1);subplot(2,2,2),plot(f1,2*abs(YY2(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');title('hamming窗的

36、滤波效果');%采用blackman窗滤波器yy3=filter(b3,1,y);YY3=fft(yy3,NFFT)/L;f1=Fs/2*linspace(0,1,NFFT/2+1);subplot(2,2,3), plot(f1,2*abs(YY3(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');title('blackman窗的滤波效果');%采用kaiser窗滤波器yy4=filter(b4,1,y);YY4=fft(yy4,NFFT)/L;f1=Fs/2*linsp

37、ace(0,1,NFFT/2+1);subplot(2,2,4),plot(f1,2*abs(YY4(1:NFFT/2+1) ;xlabel('frequency/Hz');ylabel('Amuplitude');xlabel('frequency/Hz');ylabel('Amuplitude');title('kaiser窗函数滤波效果');%滤波前后的信号的时域对比figure(4);plot(y);xlabel('时间/s');ylabel('振幅');title('

38、;滤波前振幅特性');figure(5);subplot(2,2,1),plot(yy1);xlabel('时间/s');ylabel('振幅');title('hanning窗函数滤波振幅特性');subplot(2,2,2),plot(yy2);xlabel('时间/s');ylabel('振幅');title('hamming窗函数滤波振幅特性');subplot(2,2,3),plot(yy3);xlabel('时间/s');ylabel('振幅');

39、title('blackman窗函数滤波振幅特性');subplot(2,2,4),plot(yy4);xlabel('时间/s');ylabel('振幅');title('kaiser窗函数滤波振幅特性');%滤波前后的信号的相位对比figure(6);plot(angle(Y);xlabel('时间/s');ylabel('相位');title('滤波前的相位特性');figure(7);subplot(2,2,1),plot(angle(YY1);xlabel('时间/

40、s');ylabel('相位');title('hanning窗函数滤波相位特性');subplot(2,2,2),plot(angle(YY2);xlabel('时间/s');ylabel('相位');title('hamming窗函数滤波相位特性');subplot(2,2,3),plot(angle(YY3);xlabel('时间/s');ylabel('相位');title('blackman窗函数滤波相位特性');subplot(2,2,4),plo

41、t(angle(YY4);xlabel('时间/s');ylabel('相位');title('kaiser窗函数滤波相位特性');三、运行结果1.给定的简谐信号: 图一:输入简谐信号滤波前的频谱图二:输入简谐信号滤波前的振幅图三:输入简谐信号滤波前的相位2.低通滤波器的设计低通滤波器的技术指标:采样频率 Fs=100Hz;通带截止频率 fp=20Hz; 阻带起始频率fs=30HzHanning Hamming Blackman Kaiser采用相同的技术指标。以下即是四个窗函数的频响图及对简谐信号滤波后的效果图。 图四 不同低通窗函数低通滤波器的归一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论