matlab滤波器设计

更新时间:2024-05-08 22:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

长 安 大 学 数 字 信 号 处 理 综 合 设 计

专 业 _______电子信息工程_______ 班 级 __24030602___________ 姓 名 _______张舒_______ 学 号 2403060203 指导教师 陈 玲

日 期_______2008-12-27________

一、课程设计目的:

1. 进一步理解数字信号处理的基本概念、基本理论和基本方法; 2.熟悉在Windows环境下语音信号采集的方法; 3.学会用MATLAB软件对信号进行分析和处理;

4.综合运用数字信号处理理论知识,掌握用MATLAB软件设计FIR和IIR数 字滤波器的方法;

5. 提高依据所学知识及查阅的课外资料来分析问题解决问题的能力。

二、课程设计内容:

1.语音信号的采集

利用windows下的录音机录制一段自己的话音,时间控制在1秒左右;并对语音信号进行采样,理解采样频率、采样位数等概念。

2.语音信号的频谱分析

利用函数fft对采样后语音信号进行快速傅里叶变换,得到信号的频谱特性。 3.设计数字滤波器

采用窗函数法和双线性变换法设计下列要求的三种滤波器,根据语音信号的特点给出有关滤波器的性能指标:

1)低通滤波器性能指标,fp=1000Hz,fc=1200Hz, As=100dB,Ap=1dB; 2)高通滤波器性能指标,fc=4800Hz,fp=5000Hz ,As=100dB,Ap=1dB;

3)带通滤波器性能指标,fp1=1200Hz,fp2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。

4.对语音信号进行滤波

比较用两种方法设计的各滤波器的性能,然后用性能好的滤波器分别对采集的语音信号进行滤波;并比较滤波前后语音信号的波形及频谱,分析信号的变化。

5.回放语音信号,感觉滤波前后的声音变化。

三、实验原理

(一)基于双线性Z变换法的IIR数字滤波器设计 由于

的频率映射关系是根据

推导的,所以使jΩ轴每隔2π/Ts便映射到

单位圆上一周,利用冲激响应不变法设计数字滤波器时可能会导致上述的频域混叠现象。为了克服这一问题,需要找到由s平面到z平面的另外的映射关系,这种关系应保证:

1) s平面的整个jΩ轴仅映射为z平面单位圆上的一周; 2) 若G(s)是稳定的,由G(s)映射得到的H(z)也应该是稳定的; 3) 这种映射是可逆的,既能由G(s)得到H(z),也能由H(z)得到G(s); 4) 如果G(j0)=1,那么

双线性Z变换满足以上4个条件的映射关系,其变换公式为

双线性Z变换的基本思路是:首先将整个s平面压缩到一条从–π/Ts到π/Ts的带宽为2π/Ts的横带里,然后通过标准的变换关系就得到s平面与z平面间的一一对应的单值关系。

在MATLAB中,双线性Z变换可以通过bilinear函数实现,其调用格式为: [Bz,Az]=bilinear(B,A,Fs);

其中B,A为模拟滤波器传递函数G(s)的分子分母多项式的系数向量,而Bz,Az为数字滤波器的传递函数H(z)的分子分母多项式的系数向量。

(二)窗函数法设计FIR数字滤波器

窗函数法就是设计FIR数字滤波器的最简单的方法。它在设计FIR数字滤波器中有很重要的作用,正确地选择窗函数可以提高设计数字滤波器的性能,或者在满足设计要求的情况下,减小FIR数字滤波器的阶次。常用的窗函数有以下几种:矩形窗(Rectangular window)、三角窗(Triangular window)、汉宁窗(Hanning window)、海明窗(Hamming window)、布拉克曼窗(Blackman window)、切比雪夫窗(Chebyshev window)、巴特里特窗(Bartlett window)及凯塞窗(Kaiser window)。

在MATLAB中,实现矩形窗的函数为boxcar和rectwin,其调用格式如下: w=boxcar(N) w=rectwin(N)

其中N是窗函数的长度,返回值w是一个N阶的向量,它的元素由窗函数的值组成。实际上,w=boxcar(N)等价于w=ones(N,1)。

在MATLAB中,实现三角窗的函数为triang,调用格式为: w=triang(N)

在MATLAB中,实现汉宁窗的函数为hann,调用格式如下: w=hann(N)

w=hann(N,’sflag’)

Hann函数中的参数sflag为采样方式,其值可取symmetric(默认值)或periodic。当sflag=symmetric时,为对称采样;当sflag=periodic时,为周期采样,此时hann函数计算N+1个点的窗,但是仅返回前N个点。

在MATLAB中,实现海明窗的函数为hamming,调用格式分别如下: w=hamming (N) w=hamming (N,'sflag') 其中sflag的用法同上。

在MATLAB中,实现布拉克曼窗的函数为blackman,调用格式如下: w=blackman (N) w=blackman (N,'sflag')

在MATLAB中,实现切比雪夫窗的函数为chebwin,调用格式为: w=chebwin (N,r)

其中r 表示切比雪夫窗函数的傅里叶变换旁瓣幅度比主瓣低rdB(其默认值为100dB),且旁瓣是等纹波的。

在MATLAB中,实现巴特里特窗的函数为bartlett,调用格式为:

将横带变换成整个z平面上去,这样

w=bartlett (N)

在MATLAB中,实现凯塞窗的函数为kaiser,调用格式为: w=kaiser (N,beta)

其中beta为窗函数的参数β。

四、设计及仿真实现过程:

(一)语音信号的采集

在matlab平台下,利用函数wavread对语音信号进行采样。 程序如下: 说明:(1)用电脑录音的过程及进行了数据的时域采集,故其中的设置已经决定了以下参数8000KHz,8位,单声道。[y,fs,bits]=wavread中的采样频率fs是指单位时间内的采样次数。采样位数bits是记录每次采样值数值大小的位数.(2)、fft函数用于计算矢量或矩阵的离散傅立叶变换。格式:fft=(x,n)采用n点FFT。plot是线性绘图函数;abs是求绝对值的函数。

原时域波形10.80.60.40.2amplitude0-0.2-0.4-0.6-0.8-10246n81012x 104

原频谱特性32.52amplitude1.510.5005001000150020002500frequency(hz)300035004000

(二)双线性变换法设计滤波器

(1)双向性变换法设计巴特沃斯低通滤波器,程序和频率响应如下

(2)双向性变换法设计巴特沃斯高通滤波器,程序和频率响应如下

(3)双向性变换法设计切比雪夫带通滤波器,程序和频率响应如下

10.90.80.70.60.50.40.30.20.1000.10.20.30.40.50.60.70.80.910-50-100增益.dB|H(z)|-150-200-250-30000.10.20.30.40.50.60.70.80.91?/??/?43.532.521.510.50-0.5x 104Phase (degrees)01000200030004000Frequency (Hz)5000600070008000

(三)窗函数设计滤波器

由于所给滤波器的模拟指标要求阻带的最小衰减As=100dB,所以只能选择kaiser窗,且kaiser窗的参数a=10.056,过渡带宽w为10.8*pi,选取阶数N=49。 (1)窗函数法低通滤波器设计程序及频率响应如下:

(2)窗函数法带通滤波器设计程序及频率响应如下: wn=kaiser(49);

fc1=1000;fc2=3200;fs=8000; wc1=2*fc1/fs;wc2=2*fc2/fs; b=fir1(48,[wc1 wc2],wn); freqz(b,1)

title('窗函数带通滤波器响应')

窗函数带通滤波器响应50Magnitude (dB)0-50-10000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.911000Phase (degrees)0-1000-2000-300000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.91

(3)窗函数法高通滤波器设计程序及频率响应如下:

(四).用滤波器对信号滤波,比较滤波前后语音信号波形频谱

(1)滤波程序

1.巴特沃斯低通滤波器滤波程序

2.巴特沃斯高通滤波器滤波程序

3.切比雪夫带通滤波器滤波程序

4.窗函数设计低通滤波器滤波程序

5.窗函数高通滤波器滤波程序

6.窗函数设计带通滤波器程序

(2)FIR和IIR滤波效果的比较

窗函数低通滤波前频谱321005001000150020002500300035004000窗函数低通滤波后频谱321005001000150020002500300035004000

对比图1 低通滤波

由上图窗函数滤波后频谱阻带的波纹较大一些,但基本不易看出两种滤波器的性能优劣。

窗函数高通滤波前频谱321005001000150020002500300035004000窗函数高通滤波后频谱21.510.5005001000150020002500300035004000

对比图2 高通滤波

由上图可以很明显看出窗函数在阻带的波纹较大,即滤波效果不如巴特沃斯滤波器。

窗函数带通滤波前频谱321005001000150020002500300035004000窗函数带通滤波后频谱21.510.5005001000150020002500300035004000

对比图3 带通滤波

由以上图可以看出 ,切比雪夫滤波频谱比较尖锐,只能通过很小频段的波形,而窗函数能通过适当范围的频率波形,且滤波效果较为理想。

(五)两种滤波器比较及结论

窗函数法中相位响应有严格的线性,不存在稳定性问题, 设计简单。双线性变换不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,但会产生频率混碟现象,使数字滤波器的频响偏移模拟滤波器的频响。

在对语音信号进行滤波的时候,双线性低通滤波器的滤波效果最好,滤波后的语音信号失真比较小,高通和带通的失真都较大。由此可知人的语音信号的能量主要集中在低频部分。 在用窗函数设计滤波器的时候,由于所给指标的阻带衰减比较大,对所选窗的要求比较苛刻,而且很难达到所给指标。由公式N>=a*fc/|fp-fs|或公式N=1+(As-7.95)*fc/[14.36*|fp-fs|]可算得阶数N>=3。但实际在仿真的过程中发现要想达到阻带的最小衰减为100,

阶数N得选很大,约在800左右。因为对如此大阶数的滤波器在实现的时候很困难,所以在本设计中选择N=49。

由滤波器的频谱图和滤波前后的语音信号的频谱图对比可知本设计选用双线性变换法设计的IIR滤波器比较好。在同样的技术指标的要求下,IIR滤波器所要求的阶数N也比较小,实现起来比较容易。

事实上, IIR滤波器系统函数的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,且IIR数字滤波器能够保留一些模拟滤波器的优良特性。但是这些特性是以牺牲线性相位频率特性为代价的,即用Butterworth、chelbchev和椭圆法设计的数字滤波器逼近理想的滤波器的幅度频率特性,得到的滤波器往往是非线性的。在许多电子系统中,对幅度频率特性和线性相位特性都有较高的要求,所以IIR滤波器在这些系统中往往难以胜任。有限长单位冲激响应(FIR)数字滤波器具有以下优良的特点:可在设计任意幅度频率特性滤波器的同时,保证精确、严格的线性相位特性。FIR数字滤波器的单位冲激响应h(n)是有限长的,可以用一个固定的系统来实现,因而FIR数字滤波器可以做成因果稳定系统。允许设计多通带(多阻带)系统。

五 实验思考

1.双线性变换法中Ω和ω之间的关系是非线性的,在实验中你注意到这种非线性关系了吗?从哪几种数字滤波器的幅频特性曲线中可以观察到这种非线性关系?

答:注意到了。双线性变换消除了混叠,但同时带来了严重的非线性失真。从双线性变换法设计各种滤波器的幅频特性中均可看住这种非线性关系。

2.能否利用公式完成脉冲响应不变法的数字滤波器设计?为什么?

答:能。脉冲响应不变法的设计原理是利用数字滤波器的单位抽样响应序列H(z)来逼近模拟滤波器的冲激响应g(t)。按照脉冲响应不变法的原理,通过模拟滤波器的系统传递函数G(s),可以直接求得数字滤波器的系统函数H(z),其转换步骤如下:

1) 利用ω=ΩT(可由关系式变;

2) 求解低通模拟滤波器的传递函数G(s);

3) 将模拟滤波器的传递函数G(s)转换为数字滤波器的传递函数H(z)。

推导出),将

转换成

,Ω,而

但是应该注意的是,尽管通过冲激响应不变法求取数字滤波器的系统传递函数比较方便,并具有良好的时域逼近特性,但若G(s)不是带限的,或是抽样频率不高,那么在中将发生混叠失真,数字滤波器的频率响应不能重现模拟滤波器的频率响应。只有当模拟滤波器的频率响应在超过折叠频率后的衰减很大时,混叠失真才很小,此时采样脉冲响应不变法设计的数字滤波器才能满足设计的要求,这是冲激响应不变法的一个严重的缺点。

六 心得体会

在这次课程设计中,我的最大体会是要学会强迫自己动手,整合思路,查找资料,为己所用。平时所学的理论知识只是基础,真正应用软件做设计的时候才能知道自己的局限性。一味停留在老师的教学中自己能做的实在是少之又少。老师只是在较高的层次上为自己的学习指明道路,为数字信号处理的整体概念指出思路。至于具体的某个程序要怎么编写,某个新后要怎么处理,不可能手把手的交给自己。所以就应该学会利用资料,首先就是互联网,然后是图书馆。由于本次课设的时间限制,最合理的资料应该是互联网,快速,方便。搜集到资料以后不能照抄,应该仔细阅读,读懂,然后根据自己的要求改变参数。总之,只有知道怎么自己学习,才能知道怎么自己动手。

另一方面,即具体的方面,我的收获是了解了MATLAB这个软件,熟悉了MATLAB在数字信号处理过程中的应用,并能正确地运用它对语音信号进行采样、设计滤波器、分析频谱特性等。能将之前所学的理论知识和这次的设计及仿真结合起来,掌握了滤波器的设计和正确使用,加深了对数字信号处理的理解。比如之前对时域,频域,FFT等概念只是有了抽象上的了解,并没有很深刻的掌握,通过这次的反复利用,加深了理解和印象。对于FIR和IIR两种滤波器的设计,之前也只是知道大概步骤,并不知道各种滤波器到底怎么用,到底有什么不同,这次设计把这些滤波器全都利用了一遍,实在收获颇丰。

七 参考文献

1.《数字信号处理》丁玉美,高西全等编著,西安:西安电子科技大学出版社 2.《数字信号处理》A.V.奥本海姆,R.W.谢弗著,北京:科学出版社

3.《数字信号处理——理论、算法与实现(第二版)》胡广书编著,北京:电子工业出版社

评 语 评阅人: 日期:

本文来源:https://www.bwwdw.com/article/hdbg.html

Top