1、MATLAB 课程设计报告基于 MATLAB GUI 的“滤波器设计软件 ”设计 摘 要面对庞杂繁多的原始信号, 如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点, 在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。根据其冲击响应函数的时域特性可将数字滤波器分为 IIR(有限长冲击响应)和 FIR(无限长冲击响应)。作为强大的计算软件, MATLAB 提供了编写图形用户界面的功能。所谓图形用户界面, 简称为GUI, 是由各
2、种图形对象, 如图形窗口菜单按钮、文本框等构建的用户界面。MATALB 可以创建图形用户界面 GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有 GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。关键词:MATLAB GUI IIR 滤波器 FIR 滤波器目 录1 设计任务 .12 MATLAB GUI 的简介 .23 滤波器设计原理 .33.1 滤波器概述 .33.2 IIR 数字滤波器 .43.2
3、.1 IIR 数字滤波器设计原理 .43.2.2 IIR 滤波器设计思想 .53.2.3 IIR 滤波器设计编程实现 .63.3 FIR 数字滤波器 .83.3.1 FIR 数字滤波器设计原理 .83.3.2 FIR 滤波器设计思想 .94 基于 Matlab GUI 的数字滤波器设计思路及实现 .124. 1 GUI 界面设计概述 .124.2 “滤波器设计软件”设计所实现任务 .144.3 基于 Matlab GUI 的数字滤波器设计实现 .164.3.1 “滤波器设计软件”GUI 界面设计 .164.3.2 “滤波器设计软件”回调函数编写 .174.3.3AutoChoose.m 程序的
4、编写 .224.4 运行和结果显示 .285 设计总结和心得 .335.1 设计总结 .335.2 设计心得 .34Abstract.35参考文献 .36附录11 设计任务1 设计目的1.巩固所学习过的关于数字信号处理的滤波器的设计2.学习使用 MATLAB GUI 设计工具应用平面2 设计要求要求:“滤波器设计软件”设计1、要有人机交互界面。2、滤波器设计的类型、参数均有多个值可供选择。3、当用户选择(或输入)滤波器的参数时,能够及时显示设计好的滤波器的频谱。4、该软件可设计 FIR 或 IIR 型滤波器至少一种。22 MATLAB GUI 的简介MATLAB 是美国 MathWorks 公
5、司出品的商业数 学 软 件 ,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括 MATLAB 和 Simulink 两大部分。MATLAB 是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、M aple 并称为三大数学软件。它在数学类科技应用软件中在数值 计 算 方面首屈一指。MATLAB 可以进行矩 阵 运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图 像 处 理 、信 号 检 测 、金融建模设计与分析等领域。MATLAB 的基本数据单位是矩阵,它的
6、指令表达式与数学、工程中常用的形式十分相似,故用 MATLAB 来解算问题要比用 C,FORTRAN 等语言完相同的事情简捷得多,并且 mathwork 也吸收了像 Maple 等软件的优点,使 MATLAB成为一个强大的数学软件。在新的版本中也加入了对 C,F ORTRAN, C+ ,J AVA 的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB 函数库中方便自己以后调用。MATALB 可以创建图形用户界面 GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有 GUl 支持的用户控件都集成在这个环境中并提供界
7、面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。33 滤波器设计原理3.1 滤波器概述随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像,自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理中,数字滤波器占有极其重要的地位。现代数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现,用软件来实现数字滤波器优点是随着滤波器参数的改变,很容易改变滤波器的性能。根据数字滤波器单脉冲响应的时域特性可将数字滤波器分为两种
8、, 即 IIR (Infinite Impulse Response)无限长脉冲响应数字滤波器和 FIR (Finite Impulse Response)有限长脉冲响应数字滤波器。从功能上分类, 可分为低通、高通、带通、带阻滤波器。43.2 IIR 数字滤波器3.2.1 IIR 数字滤波器设计原理滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IIR 滤波器一般采用递归型的结构,系统的输入与输出服从 N 阶差分方程:相应的传输函数为:设计 IIR 数字滤波器就是要确定传输函数中的系数 、 或零极点增益 、jaibic、A,使滤波器的频率特性满足给定的性能指
9、标要求。设计原理主要包括两jd个方面:一是根据设计指标,先设计出相应的模拟滤波器再通过脉冲响应不变法或双线性变换法转换成对应的数字滤波器;二是选择一种优准则,如最小均方准则,再在, 先最误差此准则下求出滤波器传输函数的系数。根据设计理论,在MATLAB 环境下设计 IIR 数字滤波器主要有四种方法:一是典型设计法;二是完全设计法;三是最优设计法;四是工具设计法。由于完全设计法程序简单,我们在这里利用完全设计法设计滤波器。53.2.2 IIR 滤波器设计思想IIR 滤波器 设计思想是:利用已有的模拟滤波器设计理论,首先根据设计指标设计一个合适的模拟滤波器,然后再通过脉冲响应不变法或双线性变换法,
10、完成从模拟到数字的变换。常用的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev) 滤波器、椭圆 (Ellipse)滤波器、贝塞尔(Bessel)滤波器等,这些滤波器各有特点,供不同设计要求选用。滤波器的模拟数字变换,通常是复变函数的映射变换,也必须满足一定的要求由于数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标进行归一化处理,设采样频率为 Fs,归一化频率的计算公式是: 利用完全设计法设计数字滤波器的步骤:(1)将设计指标归一化处理。(2)根据归一化频率,确定最小阶数 N 和频率参数 Wn。可供选用的阶数选择函数有:buttord,ch
11、eblord,cheb2ord ,ellipord 等。(3)运用最小阶数 N 设计模拟低通滤波器原型。根据最小阶数直接设计模拟低通滤波器原型,用到的函数有:butter, chebyl,cheby2, ellip 和 bessel。如B,A = butter(N,Wn,type) 设计type型巴特沃斯(Butterworth)滤波器 filter。N 为滤波器阶数,Wc 为截止频率, type 决定滤波器类型, type= high,设计高通 IIR滤波器,ftype= stop,设计带阻 IIR 滤波器。(4)再用 freqz 函数验证设计结果。63.2.3 IIR 滤波器设计编程实现例
12、如选择设计 IIR 的 Butterworth 低通滤波器,其Fs=22050Hz, Fp1=3400Hz,Fs1=5000Hz,Rp=2dB,Rs=20dB 程序和效果图(图 2)如下:Fs=22050;Fp1=3400;Fs1=5000;Rp=3 ;Rs=20;%设计指标wp1=2*Fp1 /Fs;ws1=2*Fs1 /Fs ;%求归一化频率% 确定 butterworth 的最小阶数 N 和频率参数 Wnn,Wn=buttord(wp1,ws1,Rp,Rs);B,A = butter(N,Wn);%确定传递函数的分子、分母系数h,f=freqz(b,a,Nn,Fs_value);%生成频
13、率响应参数plot(f,20*log(abs(h) %画幅频响应图plot(f,angle(h); %画相频响应图%N, Wn = buttord(Wp, Ws, Rp, Rs) 确定 butterworth 的 N 和 Wn%N, Wn = cheblord ( (Wp, Ws, Rp, Rs) 确定 Chebyshev 滤波器的 N 和 Wn%N, Wn = cheb2ord (Wp, Ws, Rp, Rs) 确定 Chebyshev2 滤波器的 N 和 Wn%N, Wn = ellipord (Wp, Ws, Rp, Rs) 确定椭圆(Ellipse) 滤波器 的 N 和 Wn%B,A = butter(N,Wn,type) 设计type 型巴特沃斯 (Butterworth)滤波器 filter.%B,A = cheby1 (N,R,Wn, type) 设计type型切比雪夫滤波器 filter.%B,A = cheby2(N,R,Wn, type) 设计type 型切比雪夫滤波器 filter.%B,A = ellip(N,Rp,Rs,Wn, type) 设计type 型椭圆 filter.7图 2 Butterworth 低通滤波器