数字滤波器及GUI界面的设计(MATLAB)

数字滤波器及GUI界面的设计

——专业二课实践

一、设计目的及原理

目的:
1.学会Matlab的使用,掌握Matlab的程序设计方法;
2.学会GUI界面设计;
3.掌握数字滤波器的基本概念、基本理论和基本方法;
4.掌握利用Matlab设计IIR和FIR数字滤波器的方法。
原理:
数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性:
在这里插入图片描述
其中Y(ejw) 、X(ejw) 分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性), H(ejw)是数字滤波器的单位取样响应的频谱,又称为数字滤经过滤波后的频域响应。只要按照输入信号频谱的特点和处理信号的目的,适当选择H(ejw) ,使得滤波后H(ejw) X(ejw) 满足设计的要求,这就是数字滤波器的滤波原理。根据数字滤波器单脉冲响应的时域特性,可将滤波器分为两种,即IIR无限长脉冲响应数字滤波器和FIR 有限长脉冲响应数字滤波器。从功能上可以分为高通、低通、带阻、带通滤波器。
(一)IIR滤波器设计实验原理-双线性变换法
虑波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IR滤波器一般采用递归型的结构,系统的输入与输出服从N阶差分方程泪应的传输函数为设计IR数字滤波器就是要确定传输涵数中的系数、b或零极点增益C、、A,使滤波器的频率特性满足给定的性能指标要求。设计原理主要包括两个方面:一是根据设计指标,先设计出相应的模拟滤波器再通过脉冲响应不变法或双线性变换法转换成对应的数字滤波器;二是选择一种优准则,如最小均方准则,再在,先最误差此准则下求出滤波器传输函数的系数。根据设计理论,在 MATLAB环境下设计IR数字滤波器主要有四种方法:一是典型设计法;二是完全设计法;三是最优设计法;四是工具设计法。IIR滤波器设计思想是:利用已有的模拟滤波器设计理论,首先根据设计指标设计个合适的模拟波器,然后再通过脉冲响应不变法或双线性变换法,完成从模拟到数字的变换。常用的模拟滤波器有巴特沃斯( Butterworth)滤波器、切比雪夫Chebyshev)波器、椭圆( Ellipse)波器、贝塞尔( Bessel)滤波器等,本次只涉及巴特沃斯与切比雪夫的实现方法。
(二)FIR滤波器设计实验原理-窗口函数法
窗函数设计法又称为傅里叶级数法。这种方法首先给出 H(jΩ), H(jΩ) 表示要逼近的理想滤波器的频率响应,则由 IDTFT 可得出滤波器的单位脉冲响应为:
在这里插入图片描述

由于是理想滤波器,故 hd[k]是无限长序列。但是我们所要设计的 FIR 滤波器,其 h[k]是有限长的。为了能用 FIR 滤波器近似理想滤波器,需将理想滤波器的无限长单位脉冲响应 hd[k]分别从左右进行截断。当截断后的单位脉冲响应hd[k]不是因果系统的时候,可将其右移从而获得因果的 FIR 滤波器。在MATLAB中常用的窗函数有矩形窗,Hanning窗,Hamming窗,Blackman窗,
1.矩形窗 Rectangle
在这里插入图片描述

2.汉宁窗 Hanning
在这里插入图片描述

3.海明窗 Hamming
在这里插入图片描述

4.布莱克曼窗 Blackman
在这里插入图片描述

其他省略,每种窗函数都有各自的优势与缺点,可更具需求选择步同的窗函数实现想要的效果。
以上原理部分来自网络
(三)GUI界面的设计
首先新建一个GUI:会得到两个文件,一个是.m文件,另一个是.fig文件;.m文件用于编辑GUI中控件所需要的回调代码,.fig文件可以用鼠标拖拽等比较简单的操作进行初始的界面设计。在MATLAB GUI中的每一个项目(按钮、标签、编辑框等)都是一个图形化组件。组件可分为三类:图形化控件(按钮、编辑框、列表、滑动条等),静态元素(窗口和文本字符串),菜单和坐标系。
(1)GUI界面设计。主要是通过不同的文本框、按钮等许多工具的使用,设计出个图形用户界面。要清楚这个图形界面的功能是什么,即在图形界面上的操作会引发什么样的结果。本次通过直接拖拽的方法。
(2)回调函数的设计。用户应根据设计好的图形界面的功能,针对各个不同的图形对象来编写出能够实现该功能的函数代码,确保这个图形界面能够完成所预定的功能。

二、设计的内容

1.设计一个名称为《数字滤波器设计》的GUI界面;包含IIR滤波器设计和FIR滤波器设计两大模块;
2.IIR数字滤波器和FIR数字滤波器分别包含低通、高通、带通和带阻几种滤波器,要求用输入框根据需要输入合适参数,如通带截止频率、阻带截止频率、通带波纹、阻带信号衰减量等,画出滤波器的幅频特性和相频特性曲线;
4.熟悉GUI设计,把所要求的数字滤波器的各项设计功能集成在界面上,最后完成课程设计报告并提交作品。

三、设计步骤与过程

1 创建空白GUI界面,并另保存为DigitalFilter.fig
2.添加控件:根据设计功能需要,在界面上选择合适的控件并做合理的组合与属性设置,为了便于编写代码时容易区分,将控件的名字修改为代表其功能性的名字。用到的控件有:面板控件、按钮组、按钮、单选按钮、静态文本、可编辑文本和坐标轴。
3.功能及其布局:四个模块
1).滤波器设置:包括数字滤波类型和滤波器类型:数字滤波可选择IIR 或者FIR ,每种滤波类型可从其右边的下拉列表中选择具体的实现方法。目前IIR的实现方法有:巴特沃斯、切比雪夫;FIR的实现方法有:hanning、hamming、blackman、rectangle、triangle、kaiser。而滤波器类型可选择:高通、低通、带阻、带通;
2).参数设置:滤波器通带临界频率(fs1、fs2)、滤波器阻带临界频率(fp1、fp2)、最大衰减(Rp)、最小衰减(As);
3).操作按钮:绘制、重置、退出。
3).图形显示:幅频与相频响应曲线显示。
4.设置GUI窗口最大化,以及控件大小和字体自适应;使控件与字体等与界面大小能成比例缩小或者放大。
GUI界面设计图如下:数字滤波器及GUI界面的设计(MATLAB)_第1张图片5. 代码功能实现:在.m文件中编写实现从GUI界面获取参数,判断选择情况,根据选择情况调用相应功能模块代码,当点击“绘制”按钮时,在回调函数中实现滤波并将曲线显示在HUI界面的相应区域。点击“退出”按钮时,GUI界面关闭。点击“重置”,可重新选择滤波器以及设置参数。代码实现如下:
从GUI界面获取参数:
在这里插入图片描述
(…其他参数获取,同此)
每种滤波类型(digital_value)下由滤波器类型(filter_value)以及实现方法(iirFilterMethod_value / firFilterMethod_value)决定一个滤波器:
在这里插入图片描述
数字滤波器及GUI界面的设计(MATLAB)_第2张图片数字滤波器及GUI界面的设计(MATLAB)_第3张图片数字滤波器及GUI界面的设计(MATLAB)_第4张图片
数字滤波器及GUI界面的设计(MATLAB)_第5张图片

具体实现:
数字滤波器及GUI界面的设计(MATLAB)_第6张图片数字滤波器及GUI界面的设计(MATLAB)_第7张图片自定义函数:
数字滤波器及GUI界面的设计(MATLAB)_第8张图片数字滤波器及GUI界面的设计(MATLAB)_第9张图片数字滤波器及GUI界面的设计(MATLAB)_第10张图片

四、 实现效果

部分截图如下:
数字滤波器及GUI界面的设计(MATLAB)_第11张图片数字滤波器及GUI界面的设计(MATLAB)_第12张图片数字滤波器及GUI界面的设计(MATLAB)_第13张图片数字滤波器及GUI界面的设计(MATLAB)_第14张图片

数字滤波器及GUI界面的设计(MATLAB)_第15张图片
数字滤波器及GUI界面的设计(MATLAB)_第16张图片

数字滤波器及GUI界面的设计(MATLAB)_第17张图片
数字滤波器及GUI界面的设计(MATLAB)_第18张图片

五、设计总结

设计思路总结:一定要有计划,有步骤的进行:第一步,明白需求是什么?,整理出大的框架,如果带界面,可先画出界面布局设计草图;第二步,怎么实现?第三步,为实现需求,需要有哪些准备(理论知识,软件的使用等);第四步,综合“填空”,将准备好的各个模块加入到整体中,调式。注意:最好是在每加入一个模块,调试成功后,再加入其他的模块。在代码实现过程中,可根据想要的实现功能效果实时做出增加、删除控件等操作。
不足:“重置”功能只实现了对输入参数的清空…

六、参考文献

[1]《数字信号处理》 教材
[2]博客 Matlab滤波器设计 Eason.wxd
[3]博客 IIR数字滤波器设计(信号处理) Five-菜鸟级
[4]博客 FIR数字滤波器设计_窗函数法 沈子恒
[5]博客 Matlab GUI界面设计 志朋先森
[6]博客 Matlab GUI ,设置按钮的背景图片,美化按钮
[7]博客 matlab GUI窗口最大化,控件大小以及字体自适应 init_bin

详细代码

你可能感兴趣的:(Matlab,matlab)