VC与matlab的滤波器课程设计.doc

上传人:laozhun 文档编号:2388441 上传时间:2023-02-17 格式:DOC 页数:18 大小:700KB
返回 下载 相关 举报
VC与matlab的滤波器课程设计.doc_第1页
第1页 / 共18页
VC与matlab的滤波器课程设计.doc_第2页
第2页 / 共18页
VC与matlab的滤波器课程设计.doc_第3页
第3页 / 共18页
VC与matlab的滤波器课程设计.doc_第4页
第4页 / 共18页
VC与matlab的滤波器课程设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《VC与matlab的滤波器课程设计.doc》由会员分享,可在线阅读,更多相关《VC与matlab的滤波器课程设计.doc(18页珍藏版)》请在三一办公上搜索。

1、上海应用技术学院综合实验任务书课程名称数字信号处理综合实验课程代码B703031设计题目滤波器设计与检验题目序号1158738设计时间2012年7月2日 2012年7月6日系(院)电气与电子工程学院专业电子信息班级09103351一、课程设计任务(条件)、具体技术参数(指标)设计满足下列技术参数的滤波器:通带截止频率2kHz,通带允许最大衰减2dB;阻带下限频率,16kHz,阻带允许最小衰减为dB。分别选择上述参数中的一项,设计低通滤波器(模拟或者数字即可);设计仿真程序检验所设计的滤波器。二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)1、书写课程设计说明书,要求

2、有滤波器的基本原理;2、编写程序,并放入说明书;3、程序运行方法和结果都记入说明书;4、对程序加以说明。三、课程设计工作进度计划:1、2012年7月2日书写课程设计说明书,要求有滤波器的基本原理;2、2012年7月3日熟悉相关内容,并编写程序;3、2012年7月4日编写程序,并开始书写说明书;3、2012年7月56日完整说明书,并答辩。四、主要参考资料1、沈希忠. 数字信号处理课程设计指导书. 校印讲义. 20122、沈希忠. 数字信号处理. 校印讲义. 20103、刘波等. MatLAB信号处理. 电子工业出版社. 20064、胡广书. 数字信号处理理论、算法与实验. 清华大学出版社,200

3、3指导教师(签名): 沈希忠 教研室主任(签名):林伟 2012年6月20日 2012年6月20日目录一实验目的.1二实验仪器.1三实验内容.1四实验原理.2五程序设计.6六设计程序与仿真.8七心得体会.16八参考文献.16ButterWorth滤波器设计一实验目的(1)进一步巩固所学滤波器设计方法。(2)根据滤波器技术参数设计模拟/数字滤波器(3)应用MatLAB进行编程完成滤波器设计的仿真(4)计算分析并检验设计的正确性。(5)熟练使用MATLAB语言进行编程实现。 二实验仪器计算机,Matlab仿真软件,Vc6.0三实验内容 设计一个Butterworth滤波器 已知某滤波器的技术指标为

4、:通带截止频率kHz,通带允许最大衰减dB;阻带下限频率kHz,阻带允许最小衰减为dB。分别加以组合,设计满足各个条件的Butterworth低通滤波器,可以选择模拟或数字实验,并设计仿真程序检验所设计的滤波器。我这次选择的是其中p10kHzp=1dBs=15kHzs=70dB四实验原理巴特沃斯低通滤波器的特点是具有通带内最大平坦的幅度特性,而且随着频率的升高而单调地下降。它的平方幅度响应为其 中 , n为整数,称为滤波器的阶数,n值越大通带和阻带的近似性越好,过渡带也越陡 。为低通滤波器的截止频率。该滤波器具有一些特殊的性质 : 对所有的 n , 都有 当 =0时 ,=1 ; 对所有的 n

5、, 都有 当 =时 ,=,即在处有3dB的衰减; 是的单调递减函数 ,即不会出现幅度响应的起伏; 当 n时 , 巴特沃斯滤波器趋向于理想的低通滤波器 ; 在 =0处平方幅度响应的各级导数均存在且等于0, 因此在该点上取得最大值, 且具有最大平坦特性。4.1冲激响应不变法原理 冲激响应不变法是使数字滤波器的单位冲激响应序列模仿模拟滤波器的单位冲激响应,将模拟滤波器的单位冲激响应加以等间隔抽样,使正好等于的抽样值,即满足:式中:T为抽样周期。 冲激不变法把稳定的转换为稳定的。由此方法可得到一阶系统的最基本的转换关系为:4.2 双线性变换法原理双线性变换法是从频域出发,使数字滤波器的频率响应与模拟滤

6、波器的频率响应相似的一种变换法。直接使数字滤波器的频率响应,逼近模拟滤波器的频率响应,进而求得H(z)。先将s平面压缩成s1平面上一个宽度为2/T的水平带状区域,然后通过将这个带状区域映射到整个z平面,实现s平面到z平面的单值映射。引入正切变换 将s平面的虚轴变换到s1平面虚轴/T之间 改写成 延拓到整个s平面和s1平面,令,则得 再将s1平面映射到z平面,应用,从而实现了s平面到z平面的单值映射。 或 (简单的代数关系)1n=阶的巴特沃斯滤波器系数 n b7 b6 b5 b4 b3 b2 b1 b0 1 1.0000 2 1.4142 1.0000 3 2.0000 2.0000 1.000

7、0 4 2.6131 3.4142 2.6131 1.0000 5 3.2361 5.2361 5.2361 3.2361 1.0000 6 3.8637 7.4641 9.1416 7.4641 3.8637 1.0000 7 4.4940 10.0978 14.5918 14.5918 10.0978 4.4940 1.0000 8 5.1258 13.1371 21.8462 25.8462 21.8462 13.1371 5.1258 1.00004.3数字滤波器介绍数字滤波器是一种用来过滤时间离散信号的数字系统,它可以用软件(计算机程序)或用硬件来实现,而且在两种情况下都可以用来过滤

8、实时信号或非实时信号(记录信号)。尽管数字滤波器这个名称一直到六十年代中期才出现。但是随着科学技术的发展及计算机的更新普及,数字滤波器有着很好的发展前景。有些时候,它可以完全取代模拟滤波器。 数字滤波器具有如下的优点:它没有漂移,它能处理低频信号,频率响应特征可做成极接近于理想的特性,它可以做成没有插人损耗和有线性相位特性,可相当简单地获得自适应滤波,滤波器的设计者可以控制数字字长,因而可以精确地控制滤波的精度。其中,它最重要的优点是:随着滤波器参数的改变,很容易改变滤波器的性能。这一特点允许我们只用一种程序滤波器完成多重滤波任务。 本文采用双线性变换法设计IIR巴特沃斯低通数字滤波器实现了对

9、工频干扰信号的有效滤波。2 巴特沃斯(Butterworth)低通数字滤波器的特性所谓低通滤波器,就是只能让低频分量通过。在低通滤波器的设计中,有许多不同的逼近方法:巴特沃斯逼近,切比雪夫逼近,椭圆逼近方法等。其中,最简单的逼近为巴特沃斯逼近。巴特沃斯低通滤波器的平方幅度响应为其中,n为滤波器的阶数,为低通滤波器的截止频率。 该滤波器具有 一些特殊的性质: 对所有的n,都有当时, ; 对所有的n,都有当时, ;是的单调递减函数,即不会出现幅度响应的起伏; 当时,巴特沃斯滤波器趋向于理想的低通滤波器; 在处平方幅度响应的各级导数均存在且等于0,因此在该点上取得最大值,且具有最大平坦特性。 图1展

10、示了2阶、4阶、8阶巴特沃斯低通滤波器的幅频特性。可见阶数n越高,其幅频特性越好,低频检测信号保真度越高,过渡带变窄,即衰减加剧,但半功率点不变。图1 巴特沃斯低通滤波器的幅频特性3 IIR数字滤波器的性质无限长冲激响应( IIR) 数字滤波器是数字滤器的一种,数字滤波器根据其冲激响应函数的时域特性,还包括有限长冲激响应( FIR)数字滤波器。IIR数字滤波器的特征是:具有无限持续时间冲激响应;需要用递归模型来实现,这可以从其差分方程得出,也可以从其系数函数为:得出。 数字巴特沃思滤波器属于IIR滤波器,该类滤波器具有特定的性质和设计方法。目前比较成熟的IIR数字滤波器设计方法有两种:1)直接

11、法目前所用的方法主要是:零极点累试法、频域幅度平方误差最小法和时域单位脉冲响应逼近法。直接法的最大优点在于可以设计任意幅频特征的滤波器。2)间接法,目前所用的方法主要是:冲激响应不变法、阶跃响应不变法和双线性法。它们都是借助于 已经成熟的现有低通滤波器原型进行设计,即对数字低通数字滤波器,先将数字低通滤波器的技术指标按希望的设计方法转换为模拟低通滤波器的技术指标,再按指定的模拟低通滤波器的类型设计模拟滤波器H(s),然后,将模拟滤波器的系统函数H(s)从s平面转换到z平面,得到数字低通滤波器的系统函数H(z);如所设计的数字滤波器为高通、带通或带阻滤波器,则可借助模拟滤波器的频带变换转换为低通

12、模拟滤波器。 由于直接法设计巴特沃思滤波器相对复杂,在不需要任意幅频特征的情况下,一般采用问接法,同时由于冲激响应不变法和阶跃响应不变法,从s平面转换到z平面的映射为多值映射,容易造成频谱混叠,故而本文采用不会产生频谱混叠的双线性变换法。 4.4 数字巴特沃思滤波器的双线性变换法设计 设计IIR滤波器的任务就是寻求一个因果、物理上可实现的系统函数H(z)使其频率响应满足所希望得到的频域指标,即符合给定的通带截止频率、 阻带截止、通带衰减和阻带衰减等指标。 双线性变换法的基本步骤如下:(1)根据任务,确定性能指标:在设计之前,首根据工程实际的需要确定巴特沃思滤波器的技术指标:边界频率:,;通带最

13、大衰减和阻带最小衰减; (2)将数字滤波器的技术指标转换成模拟滤波器指标。双线性变换法的转换关系为:,为数字角频率,为模拟角频率,为取样周期; (3)用模拟滤波器设计方法得到模拟巴特沃斯滤波器的传输函数H(s),这可借助巴特沃思滤波器相关的严格的设计公式、现成的曲线和图表得到;(4)映射实现:利用双线性变换法关系式 将模拟巴特沃思滤波器H(s)转换成数字巴特沃思滤波器H(z); (5)用有限精度算法实现这个系统函数H(z),同时要确定该滤波器的结构, 因为如果在硬件上实现该滤波器必须考虑计算的复杂度、存储容量限制等因素, 而用Matlab实现无此影响; (6)用合适的软、硬件技术实现该滤波器。

14、五程序设计5.1 MATLAB相关知识MATLAB包括拥有数百个内部函数的主包和三十几种工具包。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。本次课设要用到的是matlab的信号处理工具箱,它提供了IIR滤波器设计的完全工具函数,用户只要调用这些工具函数即可一次性完成设计,而不需像上面分步实现。MATLAB提供的函数有:Butter、cheby1、cheby2、ellip等。这些函数即可用于模拟滤波器也适用于数字滤波器。在使用这些

15、函数设计数字滤波器时,数字频率采用标准化频率(归一化频率)。matlab的信号处理工具箱,它提供了有关巴特沃斯滤波器的函数buttap、buttord、buttter 。 利用可设计 出 n阶 巴特沃斯低通滤波器原型,burrord函数 可在给定滤波器性能的情况下,选择巴特沃斯滤波器的阶数 n和截止频率 ,从而可利用butter函数设计巴特沃斯滤波器的传递函数。 利用可得到满足性能的模拟巴特沃斯滤波器的最小阶数 n及截止频率, 其中为通带的拐角频率 ,为阻带的拐角频率,和的单位均为rad/s; 为通带区的最大波动系数 ,为阻带 区的最小衰 减 系数 ,和 的单位都为dB。 利用 可设计截止频率

16、为的n阶低通模拟巴特沃斯滤波器。5.2c程序设计本实验需要选择正确的公式,利用循环结构实现公式的计算过程。另外还需要运用graphic.h头文件结合之前的公式绘制滤波器特性图六设计程序与仿真 6.1matlaB程序:Butterworth 滤波器clear;fp=5000;fs=13000;Ap=3;As=40; wp=2*pi*5000;ws=2*pi*15000; N,wc=buttord(wp,ws,Ap,As,s)B,A=butter(N,3.7521,s) Bz,Az=impinvar(B,A) ; H,w =freqs(B,A,wc); magH=abs(H); phaH=unwr

17、ap(angle(H); plot(w/(2*pi),20*log10(magH); title(巴特沃斯低通滤波器的幅频特性); xlabel(频率/Hz); ylabel(幅度/db) ;Chebyshev 1型滤波器wp=2*pi*2000;ws=2*pi*15000; ap=3;as=70; N,wc=cheb1ord(wp,ws,ap,as,s) B,A=cheby1(N,ap,3.1416,s) H,W=freqs(B,A,wc); subplot(221),plot(W/(2*pi)/1000,20*log10(abs(H);gridxlabel(频率(kHz);ylabel(幅

18、度谱(dB);subplot(222),plot(W/(2*pi)/1000,abs(H);gridxlabel(频率(kHz);ylabel(幅度谱(dB);subplot(223),plot(W/(2*pi)/1000,20*log10(angle(H);gridxlabel(频率(kHz);ylabel(幅度谱(dB);subplot(224),plot(W/(2*pi)/1000,angle(H);gridxlabel(频率(kHz);ylabel(幅度谱(dB);Chevbyshev 2型滤波器clearwp=2*pi*2000;ws=2*pi*15000; ap=3;as=70;

19、N,wc=cheb2ord(wp,ws,ap,as,s) B,A=cheby2(N,ap,3.1416,s) H,W=freqs(B,A,wc); subplot(221),plot(W/(2*pi)/1000,20*log10(abs(H);gridxlabel(频率(kHz);ylabel(幅度谱(dB);subplot(222),plot(W/(2*pi)/1000,abs(H);gridxlabel(频率(kHz);ylabel(幅度谱(dB);subplot(223),plot(W/(2*pi)/1000,20*log10(angle(H);gridxlabel(频率(kHz);yl

20、abel(幅度谱(dB);subplot(224),plot(W/(2*pi)/1000,angle(H);gridxlabel(频率(kHz);ylabel(幅度谱(dB);椭圆滤波器clearwp=2*pi*2000;ws=2*pi*15000; ap=3;as=70; N,wc=ellipord(wp,ws,ap,as,s) B,A=ellip(N,ap,as,1.2566,s) H,W=freqs(B,A,wc); subplot(221),plot(W/(2*pi)/1000,20*log10(abs(H);gridxlabel(频率(kHz);ylabel(幅度谱(dB);subp

21、lot(222),plot(W/(2*pi)/1000,abs(H);gridxlabel(频率(kHz);ylabel(幅度谱(dB);subplot(223),plot(W/(2*pi)/1000,20*log10(angle(H);gridxlabel(频率(kHz);ylabel(相度谱(dB);subplot(224),plot(W/(2*pi)/1000,angle(H);gridxlabel(频率(kHz);ylabel(相度谱(dB);6.2c程序:#include#include#include#includefloat pi=3.1415926;float DoN(floa

22、t as,float ap,float ws,float wp) /nfloat N;N=0.5*(log10(pow(10,as/10)-1)/(pow(10,ap/10)-1)/log10(ws/wp);return N;float DoOc(float ap,float wp,int N)float oc;oc=2*pi*wp*pow(pow(10,0.1*ap)-1),1/2/N);return oc;void DoHs(int N,int k,float Oc)float n,w,g1000,as,ap,ws,wp,O,s;int driver,mode,i,j;driver=DET

23、ECT;mode=0;initgraph(&driver,&mode,);line(50,400,50,50);line(50,400,630,400);for(j=50;j=650;j=j+50)line(50+j,401,50+j,403);outtextxy(85,402,2000);outtextxy(185,402,8000);outtextxy(285,402,12000);outtextxy(385,402,16000);outtextxy(485,402,20000);outtextxy(585,402,24000);for(j=50;j=300;j=j+50)line(50,

24、400-j,47,400-j);outtextxy(35,90,1);outtextxy(45,402,0);outtextxy(300,50,幅频特性图);for(O=0;O=2400000;O=O+10)s=1/(1+pow(O,2*N)/pow(Oc,2*N);/line(50+O/1000,400-300*s,49+O/1000,401-300*s);getch();closegraph();int main()float n,as,ap,O,ws,wp,Oc,s=1;int k=0,N;printf(依次输入有效as,ap,ws,wp以空格区分:n);scanf(%f %f %f %

25、f,&as,&ap,&ws,&wp);n=DoN(as,ap,ws,wp);N=n+1;k=N/2;Oc=DoOc(ap,wp,N);printf(n=%f N=%d k=%d Oc=%fn,n,N,k,Oc);getch();DoHs(N,k,Oc);scanf(%d,&n);七心得体会在本次实验之前,我一直没搞懂设计低通滤波器到底需要那些步骤,怎么样才算设计出了一个滤波器,所以对如何设计滤波器完全没有头绪,然后有一次看到别的同学用matlab编写的程序中显示了各个值的计算结果,我又仔细看了书上的butterworth滤波器设计,我发现只要确定出阶数,然后算出Wc和传递函数H(s)就行了。于

26、是我就觉得可以用c语言来实现编程。接下来基本就是考验c语言用的如何了。当时我一度陷入了一个思维误区,我以为先算出H(s),再用s=Jw代入,计算模值就可以得出幅频特性。但是这样做会涉及到复数的计算,要用c语言来实现复数的运算对我这样的水平来说不是一件很容易的事情,虽然勉强用结构体写出了复数的运算方法,但是由于传递函数的分母阶数太高,我一直没有找出解决方法。后来我看到别的同学用了很简单的几句代码就算出了幅频特性,仔细看了一下代码,我才发现他用的是另一个公式|H(jW)|2=1/(BnW2*N),用了这个公式之后,所有的问题都迎刃而解了。本次试验另一个要点就是用c语言绘图,通过百度我知道了graphics.h头文件,用它提供的代码就简单的实现了作图功能。这次实验扔我重拾了很久没有碰过的c语言,在实验的过程中渐渐有了编程的感觉,对我以后从事这方面的工作提供了莫大的帮助!八参考文献1、数字信号处理 沈希忠 上海应用技术学院 20072、数字滤波器设计及工程应用 宋寿鹏 江苏大学出版社3、数字信号处理的MATLAB实现 万永革 科学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号