基于MATLAB的数字滤波器设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
尔曼滤波器等,其输入信号中有用信号和希望滤除的成分频带重叠。对于经典滤波器,
从频域上也可以分为低通、高通、带通和带阻滤波器。从时域特性上看,数字滤波器还
可以分为有限冲激响应数字滤波器(FIR)和无限冲激响应数字滤波器(IIR)。
对于有限冲激响应数字滤波器(FIR),其输出 y(n)只取决于有限个过去和现在的输
唐山学院 数字信号处理 课 程 设 计
题 目 基于 MATLAB 的数字滤波器设计
系 (部)
信息工程系
班级
Biblioteka Baidu
姓名
学号
指导教师
2014 年 1 月 6 日至 1 月 10 日 共 1 周
2014 年 1 月 9 日
课程设计成绩评定表
出勤 情况
出勤天数 缺勤天数
成
出勤情况及设计过程表现(20 分)
绩
课设答辩(20 分)
(3)具有多层面的图像处理系统; (4)具有丰富高效的MATLAB工具箱; (5)具有便利的程序接口(API); (6)应用领域广泛; (7)嵌入了面向对象编程语言。
3.2 系统界面设计工具—GUI 概述
图形用户界面(graphical user interfaces ,GUI)则是由窗口、光标、按键、菜单、文 字说明等对象(objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选 择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。在 MATLAB 中 GUI 是一中包含多种对象的图形窗口,并为 GUI 开发提供一个方便高效的 集成开发环境 GUIDE。GUIDE 主要是一个界面设计工具集,MAYLAB 将所有 GUI 支 持度控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。 GUIDE 将设计好的 GUI 保存在一个 FIG 文件中,同时生成 M 文件框架。
评
设计成果(60 分)
定
总成绩(100 分)
提问 (答辩)
问题 情况
综 合 评 定
指导教师签名: 年月日
1 引言
数字滤波在通信、图像编码、语音编码、雷达等许多领域中有着十分广泛的应用。 目前,数字信号滤波器的设计在图像处理、数据压缩等方面的应用取得了令人瞩目的进 展和成就。近年来迅速发展起来。
MATLAB 是美国 MathWorks 公司推出的一套用于工程计算的可视化高性能语言与 软件环境。MATLAB 为数字滤波的研究和应用提供了一个直观、高效、便捷的利器。 它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个交互式的工作环境中。 MATLAB 推出的工具箱使各个领域的研究人员可以直观方便地进行科学研究、工程应 用,其中的信号处理(signalproeessing)、图像处理(imageproeessing)、小波(wavelet)等工 具箱为数字滤波研究的蓬勃发展提供了有力的工具。
(2-2)
式中,X(z)、Y(z)分别为 x(n)和 y(n)的 Z 变换。
在频域内,输入和输出则存在如下关系:
Y(j )=H(j )X(j )
(2-3)
式中,H(j )是数字滤波器的频率特性;X(j )Y(j )分别为 x(n)和 y(n)的频谱,而
为数字角频率。
数字滤波器可以有很多种分类方法,但总体上可分为两大类。一类称为经典滤波器,
该差分方程的单位冲激响应是无限k延1 续的。
r0
(2-5)
在本次设计当中我用双线性变换法设计了无限冲激响应数字滤波器(IIR),其中涉及
到两种类型的滤波器,即巴特沃斯(Butterworth)滤波器和切比雪夫(Chebyshev) 滤波器,
包括了低通、带通和高通滤波器。
3 MATLAB 简介
3.1 MATLAB 概述
即一般的滤波器,其特点是输入信号中的有用成分和希望滤除的成分占用不同的频带,
通过合适的选频滤波器可以实现滤波 [3] 。例如,若输入信号中有干扰,信号和干扰的频
带互不重叠,则可滤出信号中的干扰得到纯信号。但是,如果输入信号中信号和干扰的
频带相重叠,则干扰就不能被有效的滤出。另一类称为现代滤波器,如维纳滤波器、卡
2 设计内容、要求及数字滤波器
2.1 设计内容
所设计的数字滤波器应完成以下功能: (1)设计低通、带通、高通数字滤波器; (2)可以对合成信号(含低频、中频、高频分量)、语音信号进行滤波; (3)通过 GUI 界面进行控制。
2.2 设计要求
1、根据题目要求进行数字滤波器总体设计。 2. 完成数字滤波器具体设计。 (1)输入信号的选定。(2)确定设计方法、设计指标。 3. 滤波器程序的设计。 (1)完整源程序。(2)运行结果图。
MATLAB是美国MathWorks公司开发的一种功能极其强大的高技术计算语言和内容 极其丰富的软件库,集数值计算、矩阵运算和信号处理与显示于一身。该软件最初是由 美国教授Cleve Moler创立的。该软件利用了当时代表数值线性代数领域最高水平的 EISPACK和LINPACK两大软件包,并且利用Fortran语言编写了最初的一套交互式软件系 统,MATLAB的最初版本便由此产生了 [5] 。
FIG 文件:包括 GUI 图形窗口及其所有后裔的完全描述,包括所有对象属性的属 性值。它是一个二进制文件调用 hsave 课保存图形窗口时将生车该文件。M 文件包括 GUI 设计、控件函数以及定义为子函数的用户控件回调函数,主要用于控制 GUI 展开 时的各种特征。 GUI 创建包括界面设计和控件编程两部分,主要步骤如下。第一步: 通过设置 GUIDE 应用程序的选项来运行 GUIDE;第二步:使用界面设计编辑器进行面 设计;第三步:编写控件行为响应控制(即回调函数)代码。
3.3 界面设计及使用说明
首先我们新建一个 GUI 文件:File/New/GUI 如下图所示:
图 3-1 GUI 创建界面
选择 Blank GUI(Default),其次,进入 GUI 开发环境如下图所示:
图 3-2 GUI 开发环境
然后开始进行布件,在本次的设计中用到了六个按钮,以及七个图框。对每一个按钮 进行调用程序。在此有两种方法,第一可以将程序编写在一个独立的 M 文件中,然 后双击按钮,在 Callback 正添加建好的独立文件,第二可以选中按钮之后,在工具栏中 选择 键,会弹出一个 M 文件,在最低端编写程序,然后进行运行,观察波形图等。 在本次设计中,我采用了第二种方法,优点在于可以按钮和出图框对应。
通过一定的运算关系,改变输入信号中所含频率成分的相对比例,或则滤除某些频率成
分的器件 [2] 。对于数字滤波器而言,若系统函数为 H(z),其脉冲响应为 h(n),输入时间序
列为 x(n),则它们在时域内的关系式如下:
y(n)=h(n)*x(n)
(2-1)
在 Z 域内,输入和输出存在如下关系:
Y(z)= H(z)X(z)
利用双线性变化法设计滤波器的变换原理:双线性变换法是使数字滤波器的频率响 应与模拟滤波器的频率响应相似的一种变换方法。为了克服脉冲响应不变法的多值映射 这一缺点,首先把整个 s 平面压缩变换到某一中介的 s1 平面的一横带里,然后再通过 标准变换关系将此横带变换到整个 z 平面上去,这样就使 s 平面与 z 平面是一一对应关 系,消除了多值变换性,同时也就消除了频谱混叠现象。
数字滤波器与模拟滤波器相比,具有精度高、稳定、体积小、重量轻、灵活、不要求 阻抗匹配以及能实现模拟滤波器无法进行的特殊滤波等优点。本文主要介绍有限冲激响 应数字滤波器(FIR)和无限冲激响应数字滤波器(IIR)的设计原理、方法、步骤以及 在 MATLAB 中的实现,并以实例形式列出设计程序和仿真结果。
利用双线性变化法设计数字滤波器的步骤: 1.将设计指标归一化处理。 2.根据归一化频率,确定最小阶数 N 和频率参数 Wn。可供选用的阶数选择函数
有:buttord,cheblord,cheb2ord,ellipord 等。 3.运用最小阶数 N 设计模拟低通滤波器原型。根据最小阶数直接设计模拟低通滤
数字滤波器与模拟滤波器相比,具有精度高、稳定、体积小、重量轻、灵活、不要 求阻抗匹配以及能实现模拟滤波器无法进行的特殊滤波等优点 [1] 。本文主要介绍有限冲 激响应数字滤波器(FIR)和无限冲激响应数字滤波器(IIR)的设计原理、方法、步骤 以及在 MATLAB 中的实现,并以实例形式列出设计程序和仿真结果。
2.3 数字滤波器的定义和分类
数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非
时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。因此,数字滤波
器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将
所需要的运算编成程序,让通用计算机来执行。数字滤波器,输入输出均为数字信号,
4 IIR 数字滤波器的设计
4.1 IIR 数字滤波器的设计思路
IIR 滤波器设计思想是:利用已有的模拟滤波器设计理论,首先根据设计指标设计 一个合适的模拟滤波器,然后再通过脉冲响应不变法或双线性变换法,完成从模拟到数 字的变换。常用的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev) 滤 波器、椭圆(Ellipse)滤波器、贝塞尔(Bessel)滤波器等,这些滤波器各有特点,供不同设 计要求选用。滤波器的模拟数字变换,通常是复变函数的映射变换,也必须满足一定的 要求。
波 器 原 型 , 用 到 的 函 数 有 : butter, chebyl,cheby2, ellip 和 bessel 。 如 [B,A] = butter(N,Wn,'type') 设计'type'型巴特沃斯(Butterworth)滤波器 filter。N 为滤波器阶数, Wc 为截止频率, type 决定滤波器类型, type= high,设计高通 IIR 滤波器,ftype= stop, 设计带阻 IIR 滤波器。
MTALAB系统主要由以下五个部分组成 [6] : (1)MATALB语言体系。 MATLAB是高层次的矩阵/数组语言,具有条件控制、函 数调用、数据结构、输入输出、面向对象等程序语言特性。利用它既可以进行小规模端 程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程 序。 (2)MATLAB工作环境 。这是对MATLAB提供给用户使用的管理功能的总称。包括 管理工作空间中的变量据输入输出的方式和方法,以及开发、调试、管理M文件的各种 工具。 (3)图形句相系统 。这是MATLAB图形系统的基础,包括完成2D和3D数据图示、图 像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对 象进行特性控制的低层MATLAB命令,以及开发GUI应用程序的各种工具。 (4)MATLAB数学函数库。这是对MATLAB使用的各种数学算法的总称。包括各种初 等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法。 (5)MATLAB应用程序接口(API)。这是MATLAB为用户提供的一个函数库,使得用 户能够在MATLAB环境中使用C程序或FORTRAN程序,包括从MATLAB中调用于程序 (动态链接),读写MAT文件的功能 [7] 。 除此之外,MATLAB系统还具有如下特点: (1)具有易学易用的语言体系; (2)具有交互式的工作环境;
入,x(n),x(n-1),…,x(n-m),滤波器的输入输出关系可表示为
M
y(n)= br x(n r)
(2-4)
r0
对于无限冲激响应数字滤波器(IIR),它的输出不仅取决于过去和现在的输入,而
且还取决于过去的输出,其差分方程为
N
M
y(n)+ ak y(n k) = br x(n r)
最初的MATLAB由于语言单一,只能进行矩阵的运算,绘图也只能用原始的描点法, 内部函数只有几十个,因此功能十分简单。1984年该公司推出了第一个MATLAB的商业 版,并用C语言作出了全部改写。现在的MATLAB程序是MathWorks公司用C语言开发的, 第一版由steve Bangert主持开发编译解释程序,Steve Kleiman完成图形功能的设计,John Little和Cleve Moler主持开发了各类数学分分析的子模块,撰写用户指南和大部分的M文 件。接着又添加了丰富的图形图像处理、多媒体功能、符号运算和与其它流行软件的接 口功能,使MATLAB的功能越来越强大。