课程设计:基于Matlab的数字滤波器设计及其对语音信号的应用

更新时间:2023-09-19 16:28:01 阅读量: 小学教育 文档下载

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

天津工业大学课程设计

基于Matlab的数字滤波器设计及其对语音信号的应用

班级:

姓名:

学号:

指导教师:徐秀芝

日期:2012-11-23

天津工业大学课程设计

天津工业大学课程设计

摘要:

MATLAB 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波 、傅里叶变换 、时域和频域分析 、声音回放以及各种图的呈现等 , 信号处理是MATLAB 重要应用的领域之一 。

本课程设计介绍了基于Matlab的对语音信号采集、处理及滤波器的设计,并使之实现的过程。理解与掌握课程中的基本概念、基本原理、基本分析方法,用Matlab进行数字语音信号处理,并阐述了课程设计的具体方法、步骤和内容。综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。

关键词: MATLAB 工具 信号语音采集 滤波器

一 课程设计的目的:

1.掌握数字信号的频谱分析及数字滤波器的基本概念; 2.掌握基于MATLAB 的FIR和IIR数字滤波器的设计方法;

3.掌握在MATLAB下语音信号的采集、时域波形分析、频谱分析及滤波设计; 4.培养学生分析、解决问题的能力;

5. 初步培养学生撰写论文的能力,为下一步毕业设计做准备。

二 滤波器设计方法综述:

1).直接设计数字滤波器; 数字滤波器是数字信号处理的一个重要组成部分。数字滤波实际上是一种运算过程,其功能是将一组输入的数字序列通过一定的运算后转变为另一组输出的数字序列。 数字滤波器一般可以用两种方法来实现:一种是根据描述数字滤波器的数学模型或信号流图,用数字硬件装配成一台专门的设备,构成专用的信号处理机;另一种方法就是直接利用通用计算机,将所需要的运算编成程序让计算机来执行,这也是用软件来实现数字滤波器。 数字滤波器是离散时间系统,所处理的信号是离散时间信号。一般时域离散系统或网络可以用差分方程、单位脉冲响应以及系统函数进行描述。如果输入、输出服从N阶差分方程 y(n)??bix(n?i)??aiy(n?i) i?0i?0MN则其系统函数,即滤波器的传递函数为 H(z)??bzii?0Ni?1M?i1??aiz ?i天津工业大学课程设计

天津工业大学课程设计

2).脉冲响应不变法;

利用模拟滤波器来设计数字滤波器,就是从已知的模拟滤波器传递函数Ha(s)设计数字滤波器的系统函数H(z)。

因此,它归根结底是一个由S平面映射到Z平面的变换,这个变换通常是复变函数的映射变换,为了保证转换后的H(z)稳定且满足技术要求,这个映射变换必须满足以下两条基本要求:

(1)因果稳定的模拟滤波器转换成数字滤波器,仍是因果稳定的。即 S平面的左半平面必须映射到Z平面单位圆的内部。

(2)数字滤波器的频率响应模仿模拟滤波器的频 响,s平面的虚轴映射为z平面的单位圆,相应的频率之间成线性关系。

核心原理:

通过对连续函数ha(t)等间隔采样得到离散序列ha(nT)。令h(n)= ha(nT) ,T为采样间隔。它是一种时域上的转换方法。

转换步骤:

拉氏逆变换Ha(s)?????ha(t)等间隔采样?????ha(nT)?h(n)Z变换????H(z)

3).双线性变换;

脉冲响应不变法的主要缺点是频谱交叠产生的混淆,这是从S平面到Z平面的标准变换

的多值对应关系导致的,为了克服这一缺点,设想变换分为两步:

第一步:将整个S平面压缩到S1平面的一条横带里;

第二步:通过标准变换关系将此横带变换到整个Z平面上去。由此建立S平面与Z平面一一对应的单值关系,消除多值性,也就消除了混淆现象。

与脉冲响应不变法相比,双线性变换的主要优点:靠频率的严重非线性关系得到S平面与Z平面的单值一一对应关系,整个jΩ轴单值对应于单位圆一周。在零频率附近,Ω~ω接近于线性关系,Ω进一步增加时,ω增长变得缓慢, (ω终止于折叠频率处),所以双线性变换不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象。

双线性变换法的缺点:Ω与ω的非线性关系,导致数字滤波器的幅频响应相对于模拟滤波器的幅频响应有畸变,(使数字滤波器与模拟滤波器在响应与频率的对应关系上发生畸变)。双线性变换比脉冲响应法的设计计算更直接和简单。由于s与z之间的简单代数关系,所以从模拟传递函数可直接通过代数置换得到数字滤波器的传递函数。

天津工业大学课程设计

天津工业大学课程设计

4).使用MATLAB下的Filter Designed Tool3。

在Command Window窗口中输入fdatool,出现滤波器设计工具界面

图1 滤波器设计界面

设计思路:首先将数字高通滤波器的技术指标转化为模拟滤波器的技术指标,再采用Buttetworth逼近的方法求得其系统函数H(S),再利用冲激响应不变法将模拟滤波器的系统函数H(s)变为相应的数字滤波器的系统函数H(Z),然后用MATALB进行仿真,然后确定数字滤波器的结构。

5).IIR滤波器设计的基本思想

将数字滤波器的设计为模拟滤波器的设计。 设计满足技术指标的模拟滤波器。 将模拟滤波器转换为数字滤波器。

无限长单位脉冲响应(IIR)数字滤波器的单位脉冲响应h(n)是一个无限长序列,器滤波器的结构采用递归结构,即在信号流图中包含反馈支路。基本网络结构有直接型、级联型和并联型三种。其中,直接型有可以分为直接Ⅰ型和直接Ⅱ型两种。

直接Ⅰ型

y(n)??bix(n?i)??aiy(n?i)

i?0i?0MN直接Ⅱ型

天津工业大学课程设计

天津工业大学课程设计

?ibz?iMH(z)?H1(z)H2(z)?级联型

1??aizi?1Mi?0N?i

H(z)??bizi?0Ni?1M?i?A?i?1(1?cz?i)1??aiz 并联型

?(1?dzii?1i?1N?1

)H(z)?A0?H1(z)?H2(z)??A0??Ai?1 1?dzi?1iN?HN(z)

6).设计FIR滤波器

用窗函数法设计上面要求的3种滤波器。可以利用函数fir1设计FIR滤波器。 滤波器的单位脉冲响应h(n)长度为N,那么

H(z)??h(n)z?n

n?0N?1H(z)是z?1的N-1次多项式(FIR滤波器的阶数是N-1),该系统在z平面上有N-1个零点,在z=0处有一个N-1重极点。系统永远稳定。与IIR滤波器比较,设计方法差别很大,由于h(n)长度为有限的,因此FIR滤波器设计通常是找出这有限个值。

直接型

H(z)??h(n)z?n

n?0N?1级联型

H(z)??h(n)zn?0N?1?n??(a0i?a1iz?1?a2iz?2)

i?1M频率采样型

H(z)?1Hc(z)?Hk'(z) Nk?0三 课程设计的总体内容:

给定滤波器的性能指标,在MATLAB平台下设计各种FIR和IIR数字滤波器,画出滤

波器的频率响应;

天津工业大学课程设计

天津工业大学课程设计

录制一段语音信号,画出语音信号的时域波形和频谱图,然后给原始语音信号加入噪声,然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号频谱图进行对比,分析信号的变化,回放语音信号。

四 课程设计的准备工作:

1. 准备相关参考书,查阅相关文献,复习数字信号处理中各种滤波器的性能指标及设计方法; 2. 准备基于MATLAB的语音信号的录音、读取、时域波形、频谱分析等基本知识。

3. 根据你对滤波器原理及其应用的理解,制定自己的设计方案,使用Matlab进行设计,写出源代码,得出仿真结果。

五 具体步骤与要求:

1.设计数字滤波器,画出其频率响应曲线

各滤波器的性能指标:

(1)低通滤波器性能指标 fp=1000Hz, fs=1200Hz, As=40dB, Ap=1dB。 (2)高通滤波器性能指标 fs=4000Hz, fp=4300Hz, As=40dB, Ap=1dB

(3)带通滤波器性能指标 fp1=1200 Hz, fp2=3000 Hz, fs1=1000 Hz, fs2=3200 Hz, As=40dB, Ap=1dB。 要求:

(1)设计IIR滤波器:利用函数butter设计低通、利用函数cheby1设计高通,利用函数ellip设计带通。

(2)(选做)设计IIR滤波器:用双线性变换法设计上面要求的3种滤波器。 (3)(选做)设计FIR滤波器:用窗函数法设计上面要求的3种滤波器。可以利用函数fir1设计FIR滤波器。

(4)函数freqz画出各滤波器的频率响应。

①低通滤波器

天津工业大学课程设计

天津工业大学课程设计

开始 相关性能参数设定 buttord函数求得相关参数 Butter ((N,Fn)获取滤波器矩阵系数 Freqz获得滤波器频率响应 结束 图1 cheby1滤波器设计流程图

程序为:

[y,fs,bit]=wavread('xm.wav'); fp=1000; fr=1200; ap=1; as=40;

[n,fn]= buttord(fp/(fs/2),fr/(fs/2),ap,as,'z'); [b,a]= buttap(n,ap,fn); freqz(b,a);

[h,w]=freqz(b,a);

subplot(221);plot(w*fs/(2*pi),abs(h));title(' buttap低通滤波'); y1=filter(b,a,y);

subplot(222);plot(y);title('原始语音信号');

subplot(223);plot(y1);title('IIR滤波后语音信号'); X=fft(y1,4096);

subplot(224);plot(abs(X));title('滤波后信号频谱'); 显示为:

天津工业大学课程设计

天津工业大学课程设计

butter低通滤波1.510.500.5-0.5-1原始语音信号10020004000600002000400060008000IIR滤波后语音信号10.50420-202000400060008000-4-8x 10FIR滤波后语音信号-0.502000400060008000图1 butter高通滤波(a) 原始语音信号(b) IIR滤波后语音信号(c) 滤波后信号频谱(d)

②高通滤波器

天津工业大学课程设计

天津工业大学课程设计

开始 相关性能参数设定 Cheb1ord函数求得相关参数 Cheby1 ((N,Fn)获取滤波器矩阵系数 Freqz获得滤波器频率响应 结束 图2 cheby1滤波器设计流程图

程序为:

[y,fs,bit]=wavread('xm.wav'); fp=4300; fr=4000; ap=1; as=40;

[n,fn]=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,'z'); [b,a]=cheby1(n,ap,fn,'high'); freqz(b,a);

[h,w]=freqz(b,a);

subplot(221);plot(w*fs/(2*pi),abs(h));title('cheby1高通滤波'); y1=filter(b,a,y);

subplot(222);plot(y);title('原始语音信号');

subplot(223);plot(y1);title('IIR滤波后语音信号'); X=fft(y1,4096);

subplot(224);plot(abs(X));title('滤波后信号频谱');

显示为:

天津工业大学课程设计

天津工业大学课程设计

图2 cheby1高通滤波(a) 原始语音信号(b) IIR滤波后语音信号(c) 滤波后信号频谱(d)

③带通滤波器 程序为:

[y,fs,bit]=wavread('xm.wav'); fp1=1200; fr1=1000; fp2=3000; fr2=3200; ap=1; as=40;

fp=[fp1,fp2]; fr=[fr1,fr2];

[n,fn]=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,'z'); [b,a]=cheby1(n,ap,fn); [h,w]=freqz(b,a);

subplot(221);plot(w*fs/(2*pi),abs(h));title('cheby1带通滤波'); y1=filter(b,a,y);

subplot(222);plot(y);title('原始语音信号');

subplot(223);plot(y1);title('IIR滤波后语音信号'); X=fft(y1,4096);

subplot(224);plot(abs(X));title('滤波后信号频谱'); 显示为:

天津工业大学课程设计

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

Top