- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IIR数字低通滤波器的MATLAB实现
一、设及计任务要求:
设计任务:
在matlab基础上,利用相关的命令实现语音信号的处理。
要 求:
1、查阅资料,写出命令。
2、 实现傅立叶变换
3、 设计数字低通滤波器。
4、 利用Matlab GUI工具做一个图形用户界面。
指导教师签名:
2012年6月 日 二、指导教师评语:
指导教师签名:
2011 年12月 日
三、成绩
验收盖章:
2011年12月 日
目录
一、引言 4
(一)设计目的 4
(二)设计思想 4
二、IIR数字滤波器的MATLAB实现
三、实验步骤 13
四、实验结果及截图 14
结果 14
参考文献 15
附录 16
一、引言
设计目的
(1)熟悉Matlab在信号处理方面的应用
(2)深刻了解频域上的频谱特性。(3)了解数字滤波器的设计。(4)学会比较滤波前后语音信号的差异。(5)利用GUI工具做一个简洁大方的图形用户界面。
二、IIR数字低通滤波器的MATLAB实现
(一)IIR数字滤波器的传递函数及特点
设IIR滤波器的输入序列为x(n),则IIR滤波器的输入序列x(n)与输出序列y(n)之间的关系可以用下面的方程式表示:
其中,和是滤波器的系数,其中中至少有一个非零。与之相对应的差分方程为:
由传递函数可以发现无限常单位冲激响应滤波器有如下特点:
单位冲激响应h(n)是无限长的。
系统传递函数H(z)在有限z平面上有极点存在。
结构上存在着输出到输入的反馈,也就是结构上是递归型的。
(二)IIR数字滤波器的设计与实现
IIR数字滤波器的设计有多种方法,如频率变换法、数字域直接设计以及计算辅助设计等。下面只介绍频率变换设计法。首先考虑由模拟低通滤波器到数字低通滤波器的转换,其基本的设计过程如下:
将数字滤波器的技术指标转换为模拟滤波器的技术指标;
设计模拟滤波器G(S);
将G(S)转换成数字滤波器H(Z);
在低通滤波器的设计基础上,可以得到数字高通、带通、带阻滤波器的设计流程如下:
给定数字滤波器的设计要求(高通、带阻、带通);
转换为模拟(高通、带阻、带通)滤波器的技术指标;
转换为模拟低通滤波器的指标;
设计得到满足第三步要求的低通滤波器传递函数;
通过频率转换得到模拟(高通、带阻、带通)滤波器;
变换为数字(高通、带阻、带通)滤波器。
在matlab中设计IIR滤波器的方法及其它们所用到的函数如表6-1所示。
表6-1 matlab中设计IIR滤波器的方法列表
方法 描述 函数 模拟原型法 采用经典低通滤波器作为连续域上的设计模型,通过频率变换得到IIR数字滤波器,最后进行离散化处理 完整设计函数:
Beself,butter,cheby1,cheby2,ellip
滤波器的阶估计函数:
Buttord,cheb1ord,cheb2ord,ellipord
低通模拟滤波器原型函数:
beselap,buttap,cheb1ap,cheb2ap,ellipap
频域变换函数:
Lp2bp,lp2bs,lp2hp,lp2lp
其他函数:
Bilinear,impinvar 直接设计方法 直接在离散时域上估计线性的幅度响应 yulewalk 通用butterworth
设计方法 使用butterworth设计低通数字滤波器 Maxflat 参数建模方法 寻找接近于所需要设计的滤波器的通用原型 时域上的建模函数:
Lpc,prony,stmcb
频域上的建模函数:
Invfreqs,invfreqz
(三) 双线性变换法
与冲激响应不变法比较,双线性变换的主要优点是靠频率的非线性关系得到S平面与Z平面的单值一一对应关系,整个值对应于单位圆一周。所以从模拟传递函数可直接通过代数置换得到数字滤波器的传递函数。
【实例6-4】设计一个截止频率为200Hz的数字低通滤波器,采用频率为1000Hz。
解:源代码如下:
[z,p,k]=buttap(3);
[b,a]=zp2tf(z,p,k);
[bt,at]=lp2lp(b,a,200*2*pi);
[bz,az]=bilinear(bt,at,1000);
freqz(bz,a
文档评论(0)