最新数字信号处理课程设计带通滤波器的设计终稿.docx
《最新数字信号处理课程设计带通滤波器的设计终稿.docx》由会员分享,可在线阅读,更多相关《最新数字信号处理课程设计带通滤波器的设计终稿.docx(14页珍藏版)》请在冰豆网上搜索。
最新数字信号处理课程设计带通滤波器的设计终稿
数字信号处理课程设计
题目:
带通滤波器的设计及其MATLAB实现
学院:
信息工程学院
专业:
通信工程专业
班级:
1002班
学号:
2010013734
姓名:
张三
指导教师:
张峰辉
摘要:
带通滤波器(bandpassfilter)是从滤波器的特性上划分的,带通滤波器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器,与带阻滤波器的概念相对。
本文利用MATLAB软件首先产生成低频、中频、高频三种频率信号,然后将三种信号合成为连续信号,对连续周期信号抽样、频谱分析,并设计带通滤波器对信号滤波,观察滤出的信号与原信号的关系,并分析了误差的产生,通对数字信号处理课程的理论知识的综合运用。
从实践上初步实现对数字信号的处理。
第一章背景
随着信息时代和数字世界的到来,数字信号处理已成为当今一门极为重要的学科和技术领域。
它在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
在数字信号处理中起着重要的作用并已获得广泛应用的是数字滤波器(DF,DigitalFilter)。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
数字信号处理学科的一项重大进展是关于数字滤波器设计方法的研究。
数字信号处理主要是研究用数字或符号的序列来表示信号波形,并用数字的方式去处理这些序列,以便估计信号的特征参量,或削弱信号中的多余分量或增强信号中的有用分量。
关于数字滤波器,早在上世纪40年代末期,就有人讨论过它的可能性问题,但直到60年代中期,才开始形成关于数字滤波器的一整套完整的正规理论,统一了数字滤波器的基本概念和理论。
一般说来,通过对模拟滤波器函数的变换来设计数字滤波器,很难达到逼近任意频率响应或冲激响应,而采用计算机辅助设计则有可能实现频域或时域的最佳逼近,或频域时域联合最佳逼近。
在设计数字滤波器时,通常采用MATLAB来进行辅助设计和仿真。
Matlab为数字滤波的研究和应用提供了一个直观、高效、便捷的利器。
他是一套用于科学计算和图形处理可视化、高性能语言与软件环境。
它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。
第二章设计目的
要求产生一个连续信号,包含低频、中频、高频分量,对其进行采样,进行频谱分析,并设计带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。
1.熟悉有关采样,频谱分析的理论知识,对信号作频谱分析;
2.熟悉有关滤波器设计理论知识,选择合适的滤波器技术指标,设计带通滤波器对信号进行滤波,对比分析滤波前后信号的频谱;
3.实现信号频谱分析和滤波等有关Matlab函数;
4.写出基本原理,有关程序,得到的图表,结果分析,总结。
第三章带通滤波器的设计原理
1.利用MATLAB软件产生一个包含低频、中频、高频分量的连续信号。
2.对信号进行抽样,进行频谱分析。
(1)时域采样(奈奎斯特采样)定理:
为了避免产生混叠现象,能从抽样信号无失真地恢复出原信号,抽样频率必须大于或等于信号频谱最高频率的两倍。
本设计中信号最高频率是500Hz,抽样频率采用2000Hz。
(2)频谱分析:
频谱分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。
3.带通滤波器滤波的工作原理
现代生活中,为了滤除谐波干扰,获得所需要的高精度的模拟信号,经常要用到滤波器对信号进行滤波。
典型的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器和椭圆(Ellipse)滤波器等。
其中,巴特沃斯滤波器又叫最平坦响应滤波器,顾名思义,它的响应最为平坦,通带内没有波纹,其频率响应在通带和阻带中都是单调的,且在靠近零频处最平坦,而在趋向阻带时衰减单调增大,巴特沃斯响应能够最大化滤波器的通带平坦度。
该响应非常平坦,非常接近DC信号,然后慢慢衰减至截止频率点为-3dB,最终逼近-20ndB/decade的衰减率,其中n为滤波器的阶数。
巴特沃斯滤波器特别适用于低频应用,其对于维护增益的平坦性来说非常重要。
本次课程设计将使用巴特沃斯带通滤波器对信号进行滤波。
滤波器的结构框图如下图1所示:
图1滤波器的结构框图
相对于低通滤波器的通带频率为(0,w),带通滤波器的通带频率问为(w1,w2),带通滤波器是指某一频率范围内的频率分量能通过,但将其他范围的频率分量衰减到极低水平的滤波器,信号通过线性系统后,其输出就是输入信号和系统冲激响应的卷积。
从频域分析来看,信号通过线性系统后,输出信号的频谱将是输入信号的频谱与系统传递函数的乘积。
除非输入信号为常数,否则输出信号的频谱将不同于输入信号的频谱,信号中某些频率成分较大的模滤波后这些频率成分将得到加强,而另外一些频率成分很小甚至为零的模,这部分频率分量将被削弱或消失。
因此,带通滤波系统的作用相当于对输入信号的频谱进行加权。
带通滤波器的频率响应图如下图2:
图2带通滤波器的频率响应图
第四章设计过程
本次设计中利用双线性变换法和buttord、butter这两个函数直接设计数字滤波器。
设定巴特沃斯带通数字滤波器指标:
通带范围为:
150-250Hz,阻带上限为:
300HZ,阻带下限为100Hz,通带最大衰减
=2dB,阻带最小衰减为
=30dB,采样频率为fsa=2000Hz。
设计步骤为:
1.原始输入信号
首先产生一个连续输入信号,包含中频(f=200Hz),高频(f=500Hz),低频(f=30Hz)分量。
(1)程序代码
f1=30;
f2=200;
f3=500;
t=(1:
100)/2000;
x1=sin(2*pi*t*f1);
figure
(1);subplot(2,1,1);plot(x1);%绘制x1(t)的图形
xlabel('t');ylabel('x1(t)');
title('连续信号');
grid;
x2=sin(2*pi*t*f2);
subplot(2,1,2);plot(x2);%绘制x2(t)的图形
xlabel('t');ylabel('x2(t)');
title('连续信号');
grid;
x3=sin(2*pi*t*f3);
figure
(2);subplot(2,1,1);plot(x3);%绘制x3(t)的图形
xlabel('t');ylabel('x3(t)');
title('连续信号');
grid;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3);
subplot(2,1,2);plot(x);%绘制x(t)的图形
xlabel('t');ylabel('x(t)');
title('连续信号');
grid;
(2)程序运行结果如图3:
图3包含低频、中频、高频分量的连续信号的波形图
2.对连续输入信号进行采样,进行频谱分析
(1)程序代码:
n=[1:
100];t=n/2000
X=fft(x,512);w=(0:
255)/256*1000;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3);
figure(3);stem(x);%绘制x(n)的图形
xlabel('n');ylabel('x(n)');
title('数字信号');
grid;
figure(4);plot(w,abs([X(1:
256)]));%绘制频谱图
xlabel('Hz');ylabel('频率响应幅度');
title('频谱图');
grid;
(2)程序运行结果如图4、图5:
图4连续信号抽样结果波形图
图5连续信号进行抽样后的频谱图
3.根据设定要求设计带通滤波器
(1)程序代码:
fp=[100300];fs=[50350];
ap=2;as=30;
fsa=2000;
wp=fp/fsa*2;ws=fs/fsa*2;
[n,wn]=buttord(wp,ws,ap,as);
[B,A]=butter(n,wn);
[H,w]=freqz(B,A,512);
figure(5);subplot(2,1,1);
plot(w*2000/(2*pi),abs(H));%绘制带通频谱图
xlabel('Hz');ylabel('频率响应幅度');
title('带通滤波器');
grid;
subplot(2,1,2);plot(w/pi,angle(H));
xlabel('Hz');ylabel('angel');
title('相位特性');
grid;
(2)程序运行结果如图6:
图6带通滤波器的频率响应和相位特性曲线
4.对信号进行滤波
(1)程序代码:
y=filter(B,A,x);
figure(8);subplot(2,1,1);plot(y);
xlabel('t');ylabel('x(t)');
title('连续信号');
grid;
Y=fft(y,512);w=(0:
255)/256*1000;
subplot(2,1,2);plot(w,abs([Y(1:
256)]));%绘制频谱图
xlabel('Hz');ylabel('频率响应幅度');
title('频谱图');
grid;
(2)程序运行结果如图7:
图7滤波后信号时域和频域波形图
5.总程序代码
f1=30;
f2=200;
f3=500;
t=(1:
100)/2000;
x1=sin(2*pi*t*f1);
figure
(1);subplot(2,1,1);plot(x1);%绘制x(t)的图形
xlabel('t');ylabel('x1(t)');
title('连续信号');
grid;
x2=sin(2*pi*t*f2);
subplot(2,1,2);plot(x2);%绘制x2(t)的图形
xlabel('t');ylabel('x2(t)');
title('连续信号');
grid;
x3=sin(2*pi*t*f3);
figure
(2);subplot(2,1,1);plot(x3);%绘制x3(t)的图形
xlabel('t');ylabel('x3(t)');
title('连续信号');
grid;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3);
subplot(2,1,2);plot(x);%绘制x(t)的图形
xlabel('t');ylabel('x(t)');
title('连续信号');
grid;
n=[1:
100];t=n/2000
X=fft(x,512);w=(0:
255)/256*1000;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3);
figure(3);stem(x);%绘制x(n)的图形
xlabel('n');ylabel('x(n)');
title('数字信号');
grid;
figure(4);plot(w,abs([X(1:
256)]));%绘制频谱图
xlabel('Hz');ylabel('频率响应幅度');
title('频谱图');
grid;
fp=[100300];fs=[50350];
ap=2;as=30;
fsa=2000;
wp=fp/fsa*2;ws=fs/fsa*2;
[n,wn]=buttord(wp,ws,ap,as);
[B,A]=butter(n,wn);
[H,w]=freqz(B,A,512);
figure(5);subplot(2,1,1);
plot(w*2000/(2*pi),abs(H));%绘制带通频谱图
xlabel('Hz');ylabel('频率响应幅度');
title('带通滤波器');
grid;
subplot(2,1,2);plot(w/pi,angle(H));
xlabel('Hz');ylabel('angel');
title('相位特性');
grid;
y=filter(B,A,x);
figure(8);subplot(2,1,1);plot(y);
xlabel('t');ylabel('x(t)');
title('连续信号');
grid;
Y=fft(y,512);w=(0:
255)/256*1000;
subplot(2,1,2);plot(w,abs([Y(1:
256)]));%绘制频谱图
xlabel('Hz');ylabel('频率响应幅度');
title('频谱图');
grid;
第五章结果分析
设计过程中,首先产生连续输入信号,包含中频(f=200Hz),高频(f=500Hz),低频(f=30Hz)分量,然后对其进行采样,利用傅里叶变换进行频谱分析,并由带通滤波器的参数设计带通滤波器对信号进行滤波处理,对应带通滤波器的通带范围是(100,300),从运行结果图中可以看出,经过带通滤波器滤波后信号对应的频率为原信号中的中频分量(f=200Hz)。
对比波形如下图8:
a滤波前信号波形图
b滤波后波形图
图8滤波前后信号波形对比图
由上述结果显示,在误差允许的范围内实验结果与理论结果相同。
出现误差的原因:
在设计滤波器的参数时并不是十分的准确,在不同计算机上运行MATLAB时会有一定的偶然误差,从而导致实验误差的存在。
第六章设计心得
此次带通滤波器的课程设计,我们是用三个信号(分别为高、中、低频)相结合产生一个连续的输入信号,以巴特沃斯滤波器为原型设计出带通滤波器,继而用这个带通滤波器对连续的输入信号进行滤波,产生一个带通输出。
由课本上知识已知,一个理想的滤波器是物理不可实现的,肯定会有一些误差,我们应尽量减小误差,理想逼近。
此次课程设计中,我们就是运用这个原理进行设计,希望设计出的滤波器尽量逼近理想情况。
一个理想的带通滤波器应该有平稳的通带,同时限制所有通带外频率的波通过,而实际上,并不能完全实现这种理想的状态,所以我们设计时,一遍遍地改变设计参数,继而调试运行,查看调试出的图形结果,使它能尽量的逼近理想滤波器。
这段时间内,我最大的收获就是对MATLAB有了更深刻的认识,深感MATLAB强大的功能,它不仅具有高效的计算能力、灵活的图形处理能力、简单易懂的编程语言,更重要的是它对图形有超强的逼近模仿能力,应用起来非常方便。
设计过程中,我们也遇到了很多问题。
虽然都是学过的知识,但真正做起来并不简单。
了解了巴特沃斯滤波器所有的参数特性以后,结合要求,我们多次地修改拟定的参数,使得最后滤波的结果能尽量的最逼近理想结果,经过调试运行之后,得到最后的设计结果。
本次课程设计,我们体会到了齐心协力的重要性。
大家一起相互交流与合作,不懂的问题相互讨论,最后都不会的就汇总起来一起问老师。
一些相关的问题我们也请教了老师,很感谢老师非常热情的帮助。
在老师的悉心指导和严格要求下,极大地提高了设计与分析设计的能力,同时也感受到理论与实践之间的差距,使我们对数字信号处理的应用有了更加深刻的认识。
第七章收获与体会
本设计是对滤波器的一个综合性的设计,首先设计了模拟带通滤波器,有模拟带通滤波器进而设计数字带通滤波器。
并且比较性的选择使用了IIR和FIR,熟练地利用窗函数法的MATLAB工具箱完成窗函数法设计FIR带通滤波器。
通过本次设计,我理解了各种滤波器的幅频特性,熟练掌握了MATLAB软件下如何调用工具箱函数fir1和fir2来设计程序并完成仿真。
加深了对数字信号处理(DSP)的复习和深入理解,同时增加了对其的学习兴趣。
在设计过程中,我得到了一次用专业知识、专业技能分析和解决问题、全面系统的锻炼的机会,对于同一个设计,自己经过思考,做出多种方案,并选择其中适用的,合理的,方案进行设计,使我在常用编程设计思路技巧的掌握方面都能向前迈了一大步。
在我看来,课程设计是实验的一个升华,它是对我们掌握的课本知识进行的一个总的考察、提升,比实验更具锻炼意义,是真正的让我们将课本的理论知识运用于实践的过程,让我们不仅仅是死学知识,更要学会灵活的运用它们。
如果能有更多的这种锻炼的机会,我们都很乐于参与,进一步的提升自己的能力。
参考文献:
1高西全.丁玉美.数字信号处理[M]西安电子科技大学出版社,2008.
2.刘树棠.数字信号处理——使用MATLAB.西安:
西安交通大学出版社,2002
3.刘卫国.MATLAB程序设计与应用(第二版).北京:
高等教育出版社,2006
4.罗军辉等编著.MATLAB7.0在数字信号处理中的应用.北京:
机械工业出版社,2005.
5.程佩清.数字信号处理教程[M].北京:
清华大学出版社,2001.
6.桂志国.数字信号处理北京:
科学出版社2009
7.薛年喜.MATLAB在数字信号处理中的应用[M].北京:
清华大学出版社,2003.