长 安 大 学 数 字 信 号 处 理 综 合 设 计
专 业 _______电子信息工程_______ 班 级 __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