首页 基于MATLAB+GUI的滤波器设计软件设计

基于MATLAB+GUI的滤波器设计软件设计

举报
开通vip

基于MATLAB+GUI的滤波器设计软件设计数字滤波器的设计与仿真 数字滤波器的设计与仿真 【摘 要】 面对庞杂繁多的原始信号, 如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点, 在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。作为强大的计算软件, MATLAB提供了编写图形用户界面的...

基于MATLAB+GUI的滤波器设计软件设计
数字滤波器的设计与仿真 数字滤波器的设计与仿真 【摘 要】 面对庞杂繁多的原始信号, 如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点, 在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。作为强大的计算软件, MATLAB提供了编写图形用户界面的功能。所谓图形用户界面, 简称为GUI, 是由各种图形对象, 如图形窗口菜单按钮、文本框等构建的用户界面。 MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。 关键词:MATLAB;GUI ;IIR;滤波器 Abstract Facing the huge range of original signal, how to extract the required signal and suppress unwanted signals which need to use the filter. The role of filters is to select the desired signal frequency band and suppress the contents of the other bands do not need the contents of the signal. Digital filters because of their high accuracy, reliability, and flexibility advantages, in the speech signal processing, signal spectrum estimation, signal de-noising, the number of wireless communications in frequency as well as image processing and other projects are wide practical application. Impulse response functions in accordance with its time-domain characteristics can be divided into digital filter IIR (finite impulse response) and FIR (infinite impulse response). As a powerful software, MATLAB provides a graphical user interface to prepare the function. The so-called graphical user interface, referred to as the GUI, by a variety of graphic object, such as the graphics window menu button, text box, such as building a user interface.    MATALB can create a graphical user interface GUI (GraphicalUser Interface), it is between user and computer tools. MATLAB support for all users GUl controls are integrated in this environment and provide the interface appearance and behavior in response to the way attribute settings methods, with the improved version, this capability will continue to strengthen. And a powerful graphics capabilities, can easily access to higher-quality curve. Keywords: MATLAB;GUI;IIR;filter MATLAB课程设计报告 基于MATLAB GUI的“滤波器设计软件”设计 目 录 11 设计任务 2 MATLAB GUI的简介 2 3 滤波器设计原理 3 3.1滤波器概述 3 3.2 IIR数字滤波器 4 3.2.1 IIR数字滤波器设计原理 4 3.2.2 IIR滤波器设计思想 5 3.2.3 IIR滤波器设计编程实现 6 4 基于Matlab GUI的数字滤波器设计思路及实现 12 4. 1 GUI界面设计概述 12 4.2 “滤波器设计软件”设计所实现任务 14 4.3 基于Matlab GUI的数字滤波器设计实现 16 4.3.1 “滤波器设计软件”GUI界面设计 16 4.3.2 “滤波器设计软件”回调函数编写 17 4.3.3AutoChoose.m程序的编写 22 4.4 运行和结果显示 28 5 设计 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 和心得 33 5.1 设计总结 33 5.2 设计心得 34 Abstract 35 参考文献 36 1设计任务 1 设计目的 1.巩固所学习过的关于数字信号处理的滤波器的设计 2.学习使用MATLAB GUI设计工具应用平面 2 设计要求 要求:“滤波器设计软件”设计 1、要有人机交互界面。 2、滤波器设计的类型、参数均有多个值可供选择。 3、当用户选择(或输入)滤波器的参数时,能够及时显示设计好的滤波器的频谱。 4、该软件可设计FIR或IIR型滤波器至少一种。 2 MATLAB GUI的简介   MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。   MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。   MATLAB的基本数据单位是矩阵,它的指令 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。 MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个 环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。 3 滤波器设计原理 3.1滤波器概述 随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像,自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理中,数字滤波器占有极其重要的地位。现代数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现,用软件来实现数字滤波器优点是随着滤波器参数的改变,很容易改变滤波器的性能。根据数字滤波器单脉冲响应的时域特性可将数字滤波器分为两种, 即IIR (Infinite Impulse Response)无限长脉冲响应数字滤波器和FIR (Finite Impulse Response)有限长脉冲响应数字滤波器。从功能上分类, 可分为低通、高通、带通、带阻滤波器。 3.2 IIR数字滤波器 3.2.1 IIR数字滤波器设计原理 滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IIR滤波器一般采用递归型的结构,系统的输入与输出服从N阶差分方程: 相应的传输函数为: 设计IIR数字滤波器就是要确定传输函数中的系数 、 或零极点增益 、 、A,使滤波器的频率特性满足给定的性能指标要求。设计原理主要包括两个方面:一是根据设计指标,先设计出相应的模拟滤波器再通过脉冲响应不变法或双线性变换法转换成对应的数字滤波器;二是选择一种优准则,如最小均方准则,再在 , 先最误差此准则下求出滤波器传输函数的系数。根据设计理论,在MATLAB环境下设计IIR数字滤波器主要有四种方法:一是典型设计法;二是完全设计法;三是最优设计法;四是工具设计法。由于完全设计法程序简单,我们在这里利用完全设计法设计滤波器。 2、所谓数字滤波器,是指输入,输出均为数字信号,通过一定运算关系改变输入信号所含 频率成分的相对比例或者滤除某些频率成分的硬件。 实质上就是一个由有限精度算法实现的线性时不变离散系统。 它的基本工作原理是利用离散系统的特性对系统输入信号进行加工和变换, 改变输入序列的频谱或信号波形, 让有用的频率分量通过, 抑制无用的信号分量输出,根据其频率特性同样可以分为低通,高通,带通,带阻。如果要处理的信号是模拟信号,就可以通过 A/D 或者 D/A 转换,在信号形式上进行匹配转换,同样可以使用数字滤波器对模拟信号进行滤波[1]。 数字滤波器滤波的数学表达式: (1-1) 如果滤波器的输入输出信号都是离散信号,那么该滤波器的脉冲响应也一定是离散信 号,这样的滤波器就成为了数字滤波器。其频域特性为: (1-2) 其中分别是数字滤波器的输出序列和输入序列的频域响应,是数字滤波器的频域响应。 可以看见按照输入信号的频谱特点和处理信号的目的适当选择滤波 器的频域响应, 使得滤波后的输出信号满足设计性能要求, 就是滤波器的滤波原理。 1.1 IIR数字滤波器传输特性 IIR 数字滤波器的系统函数可以表示为: (1-3) 式中H(Z)称为N阶 IIR 滤波器函数,它是一种递归型的滤波器。 1.2 数字滤波器的技术要求 我们通常设计的数字滤波器一般属于选频滤波器, 我们的目的是要设计一个因果可实现 的滤波器,另外买也要考虑到成本和复杂性问题,因此实用中通带和阻带都允许一定的误差 容限,即通带不一定是完全水平的,阻带也不可能完全衰减到零[2]。而且,通带和阻带之间 还要设置一定带宽的过渡带。如下图表示低通滤波器的技术要求: 图 1.2.1 低通滤波器特性 Figure1.2.1 low pass filter's characteristic 图中,分别表示通带截止频率和阻带截止频率,通带频率范围为0≤ w≤ p w , 通带中要求,阻带截止频率范围 ,再阻带中要求,从到 称为过渡带,在这个频带内,幅度响应从通带平滑的下落到阻带。 2 MATLAB简介 MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括 MATLAB 和SIMULINK两大部分。 MATLAB 是矩阵实验室 (Matrix Laboratory) 的简称, 和Mathematica、Maple 并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB 对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI 控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP 与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。本文将利用其中的信号处理工具箱来设计IIR 数字滤波器。 3 IIR数字滤波器的几种设计方法 3.1 程序设计法 IIR 数字滤波器设计的一般方法是先设计低通模拟滤波器,进行频率变换,将其转换为相应的(高通,带通等)模拟滤波器,在转换为高通,带通或带阻数字滤波器,由模拟滤波器设计数字滤波器的方法。这是因为模拟滤波器设计方法已经很成熟,它不仅有完整的设计公式,还有完善的图表供查阅,另外,还有一些典型的滤波器类型可供我们使用。对设计的全过程的各个步骤,MATLAB 都提供了了相应的工具箱函数,使 IIR 数字滤波器设计变得非常简单。 3.1.1设计方法 程序设计法[3]是基于MATLAB 中相应的工具箱函数来实现的, IIR 数字滤波器的设计步骤可由图3.1.1所示的流程图来表示。 这个图也清晰的表示了5类 20个信号处理工具箱函数的作用, 图 3.1.1 滤波器设计流程 Figure3.1.1 flow of filter’s design 在 MATLAB 中,模拟滤波器的系统函数: (3-1) 数字滤波器的系统函数: (3-2) 在实际工程中,需要的设计结果是系数向量B 和 A,用B 和A 来综合滤波器的硬件实现结构或软件运算结构,为了直观的看出设计结果,本文的实例均以滤波器幅频响应曲线作为设计结果输出。如果需要滤波器系数,在运行程序后,只要在 MATLAB命令窗口键入系数向量名,则相应的系数就显示出来了。 3.1.2程序设计及分析 1) 设计高通和带通BUTTERWORTH数字滤波器 我们给出四阶归一化BUTTERWOTH模拟滤波器的系统函数 (3-3) 用双线性变换法从 Ha(s)设计四阶带通 BUTTERWOTH 数字滤波器,并图示,设计采样周期T=1s,指标: 本例主要涉及三个问题: ①由数字滤波器指标求相应的模拟滤波器指标; ②模拟滤波器频率变换(因为已给定阶数和模拟滤波器的归一化低通原型) ; ③由相应的模拟滤波器到数字滤波器(双线性变换法) 。 由于调用 bilinear 函数将模拟滤波器转换成数字滤波器[4] 非常容易,并且有效抑制频率失真的问题,本例给定了数字滤波器指标,所以首先要设计处与该指标相应的四阶BUTTERWORTH 模拟滤波器,然后调用 bilinear 函数将其转换为数字滤波器即可,应当特别注意的是,对于双线性变换法,由数字边界频率求相应的模拟边界频率时,一定要考虑预畸变矫正。只有这样,最终设计结果才能满足所给指标。 设计高通数字滤波器时,相应的模拟高通滤波器3dB 截止频率为 (3-4) 设计带通数字滤波器时,相应的模拟滤波器的3dB截止频率为 (3-5) 调用 MATLAB频率变换函数lp2lp,lp2hp,lp2bp,分别实现从模拟低通到模拟低通,高通带通,带阻的频率变换。[Bt,At]=lp2hp(B,A,wc) ,将系数向量为B 和A的模拟滤波器归一化低通原型(3Db)截止频频为1rad/s) ,变换成3dB截止频率为wc的高通模拟滤波器,返回高通模拟滤波器系数向量Bt和At。[Bt,At]=lp2bp(B,A,wo,Bw)将系数向量为 B 和 A 的模拟滤波器归一化低通原型变换成中心频率为 wo,带宽为 Bw 的带通模拟滤波器,返回带通模拟滤波器的系数向量 Bt 和At。其中,wo= uc lcΩ Ω , lc uc w B Ω − Ω = ,由以上原理我们来编写如下程 %用双线性变换法设计数字高通和带通滤波器 clear; close all T=1;wch=pi/2; %T:采样间隔,wch:数字高通3dB 截止 Wlc =0.35*pi; wuc=0.65*pi; %wlc,wuc;数字高通 3dB 截止频率 B=1;A=[1,2.6131,3.4142,2.6131,1]; [h,w]=freqs(B,A,512); %求原归一化模拟滤波器的频率响应 subplot(3,2,1);plot(w,20*log10(abs(h))); %画模拟滤波器幅频特性 grid;axis([0,10,-90,0]) xlabel('w/ '); title('模拟低通幅度(dB)') %(1)设计高通 omegach=2*tan(wch/2)/T; %预畸变求模拟高通 3dB 截止频率 [Bhs,Ahs]=lp2hp(B,A,omegach); %模拟域低通转换为高通系数 [Bhz,Ahz]=bilinear(Bhs,Ahs,1/T); %模拟转换位数字高通系数变量 [h,w]=freqz(Bhz,Ahs,512); %求画出数字滤波器幅频特性 Subplot(3,2,3);plot(w/pi,20*log10(abs(h))); grid;axis([0,1,-150,0]) xlabel('w/ ');title ('数字滤波器幅度(dB)')%(2)设计带通 omegalc=2*tan(wlc/2)/T; %预畸变求滤波器通带低端截止频率 omegauc=2*tan(wuc/2)/T; %预畸变求滤波器通带高端截止频率 wo=sqrt(omegalc*omegauc);Bw=omegauc-omegalc; [Bbs,Abs]=lp2bp(B,A,wo,Bw); %模拟域低通转换为带通系数 [Bbz,Abz]=bilinear(Bbs,Abs,1/T); %模拟转换为数字带通系数变量 [h,w]=freqz(Bbz,Abz,512); %求并画出数字滤波器幅频特性 subplot(3,2,4);plot(w/pi,20*log10(abs(h))); grid;axis([0,1,-150,0]) xlabel('w/pi ');title ('数字滤波器幅度(dB)') 程序运行结果如图3.1.2, 3.1.3 ,3.1.4所示分别表示模拟低通幅度,数字高通幅度和数字带通幅度特性。 、 图 3.1.2 模拟低通幅度 Figure 3.1.2 analog lowpass filter’s range 图 3.1.3 数字高通幅度 Figure3.1.3 digital high pass filter’s range 图 3.1.4 数字带通幅度 Figure3.1.4 digital band pass filter’s range 3.1.3 结论 从以上一系列函数设计中,我们由MATLAB 函数来设计滤波器是次优化的,它的设计步骤为:1 先选择设计方法;2 猜测滤波器参数,后进行设计;3 观察滤波器的响应,判断其是否符合要求;4反复这一尝试与失败过程直到符合要求。这种设计方法,很显然在设计要求上进行权衡分析是不是很有效,它更多时候是凭借设计者的经验来设计的,需要反复的检验, 并且编程的过程很繁琐, 工作量是比较大的, 因此我们下面将探讨更优化的设计方法。 3.2 基于信号处理用户界面设计 IIR数字滤波器 基于 MATLAB函数的滤波器设计完成后,需要对已设计的滤波器的频率响应要进行校核。要得到幅频、相频响应特性,运算量也是很大的。而利用 MATLAB 强大的信号处理界面工具进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。 3.2.1 FDATOOL设计 IIR数字滤波器 我们将以一个 IIR 滤波器的设计实例来具体说明使用 MATLAB 工具箱的方便。要求设计 Chebyshev1 型低通滤波器满足指标,首先在 Response Type 中选择 Bandpass 高通滤波器, 然后在下面的Desigh Method中选择IIR类型, 并且指定Filter Order项中的阶数SpecifyOrder=10,由于是设计 chebyshev 滤波器,其下面 Option 就不必选择。 然后在 FrequencySpecifications中选择Unit为Hz,给出采样频率 Fs=1000, ;最后在 Magnitude Specification中选择Unit为 dB,Apass=1。 设置完成后点击 Design Filter即可得到所设计的IIR 滤波器。通过菜单选项Analysis可以在特性区看到所设计的幅频响应、相频响应、冲击响应和零极点配置等特性。设计完成后将结果保存,封装为 filterl.fda 文件,下面是运用 FDATool 设计滤波器:其中幅频特性如图3.2.1所示 图 3.2.1 FDA设计主界面 Figure3.2.1 main contact surface of FDA design 图 3.2.2 相频特性 Figuer3.2.2 phase-frequency characteristic 图 3.2.3 冲激响应特性 Figure3.2.1 Impulse response characteristic 3.2.2 结论 从以上这些界面中我们可以清晰明了的看到设计的该滤波器的幅频, 相频和冲击响应特性:我们能够分析到,图 3.2.1 中 Chebshev1 型滤波器具有等纹波的通频带、阻带衰减的特性,总之,使用FDATOOL工具包设计和分析滤波器,是非常方便易行的,而且交互性良好,不需要极其复杂的程序编制就可以实现。 而且我们在最后的仿真模型设计中将载入这一模块进行信号滤波。 4 基于 FDESIGN更加优化的设计方法 4.1 FDESIGN设计方法 FDESIGN 是一种面向对象的滤波器设计方法。这种设计方法的设计思路是: 1 载入需要处理的信号源 2 根据需要,设计相应的数字滤波器,对信号进行滤波,显示滤波后效果 3 分析滤波后信号的频谱,如果未达到要求,可以修改滤波参数重复试验 4.2 基于 SPTOOL设计 IIR数字滤波器(面向对象设计) SPTOOL是FDESIGN设计法中常用的工具箱,它包含了信号处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览,因此只需要操作界面就可以载入,观察,分析,和打印数字信号,分析和设计数字滤波器[5]。首先在 MATLAB命令窗口输入sptool命令:在命令窗中写入以下命令 Fs=500;t = (0:500)/Fs; f=sin(2*pi*t*40)+sin(3*pi*t*50)+sin(2*pi*t*100); 此时,变量Fs、t、s将显示在 workspace列表中,如图4.2.1所示;我们按照以下步骤操作: 1)点击菜单File/Import将信号f导入并取名为f。 2)单击Filters列表下的New,按照参数要求设计出滤波器filt1。 3)将滤波器filt1应用到f信号序列。分别在Signals、Filters、Spectra 列 表中选择 f、filt1、mtlbse auto 单击 Filters列表下的Apply按钮,在弹出的Apply Filter对话框中将输出信号命名为信号3。 4)进行频谱分析。在 Signals 中选滤波后的信号信号 3,单击 Spectra 下的 Create 按钮在弹出的 Spectra Viewer 界面中选择 Method 为 FFT,Nfft=512,单击 Apply 按钮生成滤波后信号的频谱。 图 4.2.1 SPTOOL主界面 Figure4.2.1 SPTOOL main contact surface 图 4.2.2 IIR 低通滤波器设计指标 Figure4.2.2 IIR low pass filter's design target 图 4.2.3 模拟信号源 f Figure4.2.3 analog signal source f 图 4.2.4 滤波后的信号 3 Figure4.2.4 signal 3 after filted 图 4.2.5 滤波后经过FFT处理后的频谱 Figure4.2.5 frequency spectrum after filted, through FFT processing 分别选中原信号 f、滤波后信号 3,信号 3 的频谱 ,单击各自列表下方的 View 按钮,即可观察他们的波形,如图 4.4 所示。低通滤波器 filt1 使输入信号 f 中频率为 40hz 的正弦波信号通过,而将频率为75hz和100hz的正弦波信号大大衰减。在图 4.2.5中我们能很清楚的看到滤出的信号3集中在40HZ的频率区,说明滤波的效果比较理想。这样滤波后的信号波形非常清楚的展现在用户面前。 3 结论 SPTOOL界面提供了简单,直观的,更加优化的数字处理方式。我们可以根据原信号的特点,在 SPTOOL 界面中设计我们所需要的滤波器的特性,来对原信号进行处理,它能有效满足信号处理要求,是一种更加灵活的滤波器设计方式,因此我们常常会选择这种更加优化的方式来设计滤波器。 5 IIR数字滤波器的仿真 5.1 SIMULINK仿真框图设计 建立信号传输仿真模块,我们首先打开 SIMULINK 工具箱,并且建立一个 Model,在这个空白Model中进行环节库及框图的建立, 在 SIMULINK菜单下找到Source, 双击Source图标,将正弦信号源和常量信号源拉到Model中,然后分别找到DSP 离散正弦信号源,乘法器和加法器以及示波器,然后把需要用来设计 IIR 数字滤波器的模块 FDATOOL 都拉到Model中,把环节都布好后,把各环节的端口按框图连接起来。 5.2 参数设定及载入 FDATOOL文件 下面就来仿真 2.4.1 中信号处理的模型,以框图的方式直观地现实信号处理的过程,信号源为f= sin(2*pi*t*40)+sin(3*pi*t*50)+sin(2*pi*t*100), 在DSP 离散信号模块中设定参数分别为40HZ,75HZ,100HZ,在 simulink环境中,将2.3.1 中封装好的filterl.fda滤波器文件载入FDATOOL中,生成仿真框图和滤波效果如图所示。 图 5.2.1 仿真模型 Figure 5.2.1 simulation model 图 5.2.2 滤波效果 Figure 5.2.2 filting’s effect 3.2.2 IIR滤波器设计思想 IIR滤波器设计思想是:利用已有的模拟滤波器设计理论,首先根据设计指标设计一个合适的模拟滤波器,然后再通过脉冲响应不变法或双线性变换法,完成从模拟到数字的变换。常用的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev) 滤波器、椭圆(Ellipse)滤波器、贝塞尔(Bessel)滤波器等,这些滤波器各有特点,供不同设计要求选用。滤波器的模拟数字变换,通常是复变函数的映射变换,也必须满足一定的要求 由于数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标进行归一化处理,设采样频率为Fs,归一化频率的计算公式是: 利用完全设计法设计数字滤波器的步骤: (1)将设计指标归一化处理。 (2)根据归一化频率,确定最小阶数N 和频率参数Wn。可供选用的阶数选择函数有:buttord,cheblord,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 函数验证设计结果。 3.2.3 IIR滤波器设计编程实现 例如选择设计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 和频率参数Wn [n,Wn]=buttord(wp1,ws1,Rp,Rs); [B,A] = butter(N,Wn);%确定传递函数的分子、分母系数 [h,f]=freqz(b,a,Nn,Fs_value);%生成频率响应参数 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. 图 2 Butterworth低通滤波器 4 基于Matlab GUI的数字滤波器设计思路及实现 4. 1 GUI界面设计概述 GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等。进行设计时, 首先单击面板左边所需的控件, 然后在右边的图形界面编辑区中再次单击某一恰当位置, 这时将在该位上为图形界面添加相应的控件。一个图形界面的完成, 除了设计其外观外, 还有相当的一部分是通过属性的设来完成的。因此在设置这些属性时, 要注意下面几个常用又很重要的属性设置: 1、控件风格和外观       (1)BackgroundColor:设置控件背景颜色,使用[R G B]或颜色定义。       (2)CData:在控件上显示的真彩色图像,使用矩阵表示。       (3)ForegroundColor:文本颜色。       (4)String属性:控件上的文本,以及列表框和弹出菜单的选项。       (5)Visible:控件是否可见。    2、对象的常规信息       (1)Enable属性: 表示此控件的使能状态,设置为on”,表示可选,为“off”时则表示不可选。       (2)Style:控件对象类型。       (3)Tag:控件表示(用户定义)。       (4)TooltipString属性:提示信息显示。当鼠标指针位于此控件上时,显示提示信息。       (5)UserData:用户指定数据。       (6)Position:控件对象的尺寸和位置。       (7)Units:设置控件的位置及大小的单位       (8)有关字体的属性,如 FontAngle, FontName等。     3、控件回调函数的执行       (1)BusyAction:处理回调函数的中断。有两种选项:即Cancel:取消中断事件,queue:排队(默认设置)。       (2)ButtonDownFcn属性:按钮按下时的处理函数。       (3)CallBack属性:是连接程序界面整个程序系统的实质性功能的纽带。该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对字符串进行求值。       (4)CreateFcn:在对象产生过程中执行的回调函数。       (5)DeleteFcn:删除对象过程中执行的回调函数。       (6)Interruptible属性:指定当前的回调函数在执行时是否允许中断,去执行其他的函数。     4、控件当前状态信息       (1)ListboxTop:在列表框中显示的最顶层的字符串的索引。       (2)Max:最大值。       (3)Min:最小值。       (4)Value:控件的当前值。 应用MATLAB制作这样一个过程是非常方便的, 我们可以通过GUI操作来看到。该环境下要设计一个界面友好的仿真软件,一般应完成以下两个步骤: (1)GUI界面设计。主要是通过不同的文本框、按钮等许多工具的使用,设计出一个图形用户界面。要清楚这个图形界面的功能是什么,即在图形界面上的操作会引发什么样的结果。 (2)回调函数的设计。用户应根据设计好的图形界面的功能,针对各个不同的图形对象来编写出能够实现该功能的函数代码,确保这个图形界面能够完成所预定的功能。 4.2 “滤波器设计软件”设计所实现任务 “滤波器设计软件”设计所实现任务如下: 1、能够实现人机交互 2、在下拉Digital Filter菜单里选择IIR和FIR滤波器设计 3、当选择IIR滤波器时,能够选择巴特沃斯(Butterworth)、切比雪夫Ⅰ(ChebyshevⅠ)滤波器、切比雪夫Ⅱ(ChebyshevⅡ)滤波器、椭圆(Ellipse)滤波器 4、当选择FIR滤波器是,能够选择Boxar、Bartlett、Blackman、Hanning、Hamming、Kaiser窗口设计滤波器 5、在下拉菜单Filter Type中选择滤波器类型,能够选择Lowpass、Highpass、Bandpass、Bandstop四种类型 6、在下拉菜单Display Type中选择图形显示类型,能够选择Linear、Logarithmic两种类型 7、在设计滤波器阶数时,可选择自定义阶数和利用最小阶数设计滤波器,并显示最小阶数 8、在参数输入中,可输入抽样频率Fs、滤波器通带临界频率(Fp1、Fp2)、滤波器阻带临界频率(Fst1、Fst2)、通带内的最大衰减Rp、通带内的最小衰减Rs 9、设计的滤波器的幅频响应和幅频响应显示在界面中 MATLAB中的属性控制非常多, 要设置哪些对象的属性, 哪些可以不设置, 都需针对具体问题具体分析解决。接下来再通过控件布置编辑器来设置控件的对齐方式及间距等, 以完善界面功能。按要求设计好的“滤波器设计软件”主面板见图4, 共包括5个区域: (1)图形区:用于显示各模块的仿真曲线 (2)参数设区:由个静态文本框和个编辑框以及类型选择按纽组成, 实时的进行系统参数的设定和滤波器原型的选定 (3)对象模型区:由下拉菜单选定数字滤波器类型, 当用户的输人参数发生变化时, 可通过单击响应的“ Run”按钮, 实现设计结果的实时刷新与显示 (4)数据显示区:对应于图形显示结果, 实时显示滤波器阶次和分子分母多项式系数。 图 4 “滤波器设计软件”主面板 4.3 基于Matlab GUI的数字滤波器设计实现 4.3.1 “滤波器设计软件”GUI界面设计 在matlab命令行窗口中输入guide或点击matlab界面上面的菜单中的图标,打开gui设计的图形界面如图5 。然后拖入所要的图形控件,按需要修改外观和空间属性,直至满足要求,如图6。设置属性点击guide界面上方的Run按钮,会生成一个fig文件,一个m文件,其中fig文件就是界面的图形,m文件是界面的回调函数,在m文件里每个控件的回调函数都已经自动生成,控件要做的工作就是在文件框架下定义某些特殊要求的状态并补充完整回调函数场, 使单击控件时激活回调程序完成一定的功能。 图 5 GUI设计的图形界面 图6 “滤波器设计软件”GUI界面设计 4.3.2 “滤波器设计软件”回调函数编写 设计总框图如图7所示 图7 设计总框图 1、Digital Filter下拉菜单 在下拉Digital Filter菜单里选择IIR和FIR滤波器设计 选择IIR或者FIR屏蔽相应的选项,当选择IIR选项时,使FIR的Windows的选择窗口不能使用,程序和效果图(图8 、图9 )如下: function DigitalFilter_Callback(hObject, eventdata, handles) %读取此时选择的滤波器选择,“IIR、FIR” DigitalFilter_value=get(handles.DigitalFilter,'Value'); %当选择了IIR时,使窗口选项屏蔽 if(DigitalFilter_value==1) set(handles.FilterDesign,'enable','on'); set(handles.Windows,'enable','off') %当选择了FIR时,使IIR的滤波器(Butterworth、 ChebyshevⅠ等)选项屏蔽 else set(handles.FilterDesign,'enable','off'); set(handles.Windows,'enable','on') end 图8 IIR滤波器选择 图 9 FIR滤波器选择 2、Filter Type下拉菜单 在下拉菜单Filter Type中选择滤波器类型 选择低通或者高通滤波器时,隐藏相应的带通和带阻的第二个临界频率,使其频率参数不能输入,程序和效果图(图10 、图11 )如下: function FilterType_Callback(hObject, eventdata, handles) %读取此时设计的滤波器的类型,“Lowpass、Highpass、Bandpass、Bandstop” FilterType_value=get(handles.FilterType,'Value'); %当选择Lowpass或者Highpass,屏蔽相应的临界频率的显示 if((FilterType_value==1)||(FilterType_value==2)) set(handles.Fp2,'visible','off');set(handles.Fs2,'visible','off'); set(handles.text17,'visible','off');set(handles.text19,'visible','off'); set(handles.text6,'visible','off');set(handles.text10,'visible','off'); else %当选择Bandpass或者Bandstop,使相应的临界频率的显示,使参数能够输入 if((FilterType_value==3)||(FilterType_value==4)) set(handles.Fp2,'visible','on');set(handles.Fs2,'visible','on'); set(handles.text17,'visible','on');set(handles.text19,'visible','on')set(handles.text6,'visible','on');set(handles.text10,'visible','on'); end end 图10低通、高通滤波器频率参数输入 图11 低通、高通滤波器频率参数输入 3、Min Order和Custom Orde按钮 在设计滤波器阶数时,可选择自定义阶数和利用最小阶数设计滤波器,并显示最小阶数 ,这里涉及的控件Min Order和Custom Order,其回调函数如下: (1)按钮Min Order 选择使用最小阶数设置时,屏蔽自定义阶数的输入,如图12: function MinOrder_Callback(hObject, eventdata, handles) MinOrder_value=get(handles.MinOrder,'Value'); if(MinOrder_value==1) set(handles.Order,'visible','off'); else set(handles.Order,'visible','on'); end (2)按钮Custom Order 选择自定义阶数时,显示阶数输入框,如图13 function CustomOrderButton_Callback(hObject, eventdata, handles) CustomOrderButton_value=get(handles.CustomOrderButton,'Value'); if(CustomOrderButton_value==0) set(handles.Order,'visible','off'); else set(handles.Order,'visible','on'); end (3)其中涉及Run控件中的程序如下: ①显示最小阶数 set(handles.MinOrderDisplay,'string',num2str(n)) ②当选择了自定义阶数时,读取自定义阶数 if(MinOrder_value==0) n=str2double(get(handles.Order,'String')) end 图12 使用最小阶数设计Filter 图13 使用自定义阶数设计Filter 4、Fp1、Fp2、Fst1、Fst2文本编辑框 参数输入时,在输入抽样频率Fs的前提下,判断滤波器通带临界频率(Fp1、Fp2)、滤波器阻带临界频率(Fst1、Fst2)的归一化频率wp1、 wp2、ws1、ws1是否在[0,1]之间,如不正确显示错误对话框,其程序和效果图(图14)如下: function Fp1_Callback(hObject, eventdata, handles) %检查输入的通带临界频率Fp1的归一化频率是否在[0,1]之间 Fs_value=str2double(get(handles.Fs,'String')); Fp1_value=str2double(get(handles.Fp1,'String')); wp1=2*Fp1_value/Fs_value; %如果不在[0,1]之间,显示输入错误对话框 if(wp1>=1) errordlg(‘wp1=2*Fp1/Fs,归一化频率不在【0,1】之间,请输入正确的参数’,‘错误信息’) end 图 14 输入参数错误信息框显示 Fp2、Fst1、Fst2的回调函数同理编程 5、Run按钮 根据输入的参数显示设计的滤波器的幅频特性和相频特性图,其程序如下: function Run_Callback(hObject, eventdata, handles) %点击Run立即运行AutoChoose,m文件,实现滤波器设计程序 AutoChoose(handles) 6、Auto Run按钮 当选择了A
本文档为【基于MATLAB+GUI的滤波器设计软件设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_163392
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:48
分类:工学
上传时间:2012-12-11
浏览量:37