基于matlab语音信号处理设计毕业论文

更新时间:2023-04-20 13:10:01 阅读量: 实用文档 文档下载

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

Matlab语音信号处理

摘要

语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。

Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab重要应用的领域之一。

本设计通过下载一段语音,对其进行了时域分析,频谱分析,分析语音信号的特性。并应用matlab 平台对语音信号除去噪声,进一步设计三种滤波器即高通滤波器、低通滤波器、带通滤波器,基于洪泽三种滤波器设计原理,用窗函数法设计出这三种滤波器,然后含加噪的语音信号进行滤波处理。最后对比滤波前后的语音信号的时域和频域特性,回放含噪语音信号和去噪语音信号,对比研究了IIR滤波器和FIR滤波器在信号处理尤其是信号滤波去噪方面的特性和应用。论文从理论和实践上比较不同数字滤波器的滤波效果。

关键字:Matlab;语音信号;信号处理;傅里叶变换;滤波器

The Design of Analysis Voice Signal

Abstract

Speech signal processing is to study the use of digital signal processing technology and knowledge of the voice signal voice processing of the emerging discipline is the fastest growing areas of information science one of the core technology. Transmission of information through the voice of humanity's most important, most effective, most popular and most convenient form of exchange of information..

Matlab language is a data analysis and processing functions are very powerful computer application software, sound files which can be transformed into discrete data files, then use its powerful ability to process the data matrix operations, such as digital filtering, Fourier transform, when domain and frequency domain analysis, sound playback and a variety of map rendering, and so on. Its signal processing and analysis toolkit for voice signal analysis provides a very rich feature function, use of these functions can be quick and convenient features complete voice signal processing and analysis and visualization of signals, makes computer interaction more convenient . Matlab Signal Processing is one of the important areas of application.

The design of mobile phone collection a noisy speech, has carried on the analysis in time domain, frequency spectrum analysis, analysis of the characteristics of speech signal. And application of the MATLAB platform to the voice signal to remove noise, the further design of three kinds of filter is a high-pass filter, low-pass filter, bandpass filter, based on the Hongze three kinds of filter design, window function method to design the three kinds of filter, and then with the original speech signal filtering. Finally the comparison before and after filtering the speech signal in time domain and frequency domain, the playback noise speech signal denoising and the voice signal, a comparative study of the IIR filter and a FIR filter in signal processing especially for signal denoising in terms of the characteristics and application of. The theory and practice from the comparison of different digital filtering effect.

Keywords: Matlab; speech signal; signal processing; FFT; filter

目录

摘要 .................................................................................. I Abstract ............................................................................. II 第一章绪论 . (1)

1.1课题研究的背景 (1)

1.2国内外研究状况 (1)

1.3本文的主要工作及研究步骤 (2)

1.3.1本文的主要工作 (2)

1.3.2论文的研究步骤 (2)

第二章语音信号处理的总体方案 (4)

2.1运行环境及系统的基本要求 (4)

2.1.1运行的环境 (4)

2.1.2系统的基本要求 (4)

2.2语音信号相关调用函数介绍 (4)

2.2.1 Wavread函数介绍 (4)

2.2.2其他相关函数介绍 (5)

第三章语音信号处理的基本知识 (6)

3.1语音的录入和打开 (6)

3.2采样位数和采样频率 (6)

3.3时域信号FFT分析 (6)

第四章语音信号的采集 (7)

4.1语音信号的采集 (7)

4.2语音信号的频谱分析 (8)

第五章数字滤波器的设计和画出其频率响应 (10)

5.1三种滤波器的性能指标 (10)

5.2IIR滤波器与FIR滤波器的性能比较 (10)

5.3设计FIR滤波器 (11)

5.3.1FIR低通滤波器设计 (11)

5.3.2FIR高通滤波器设计 (12)

5.3.3FIR带通滤波器的设计 (13)

5.4设计IIR滤波器 (14)

5.4.1IIR低通滤波器的设计 (14)

5.4.2IIR高通滤波器设计 (15)

5.4.3IIR带通滤波器设计 (17)

第六章语音信号的滤波 (19)

6.1语音信号滤波的流程 (19)

6.2对语音信号滤波的仿真 (19)

6.2.1滤波前后的时域对比 (19)

6.2.2滤波前后的频域对比 (21)

第七章总结 (25)

参考文献 (26)

致谢 (1)

附录: (1)

第一章绪论

1.1课题研究的背景

通过语音传递倍息是人类最重要、最有效、最常用和最方便的交换信息的形式。语言是人类持有的功能,声音是人类常用的工具,是相互传递信息的最主要的手段。因此,语音信号是人们构成思想疏通和感情交流的最主要的途径。并且,由于语言和语音与人的智力活动密切相关,与社会文化和进步紧密相连,所以它具有最大的信息容量和最高的智能水平。现在,人类已开始进入了信息化时代,用现代手段研究语音信号,使人们能更加有效地产生、传输、存储、获取和应用语音信息,这对于促进社会的发展具有十分重要的意义。让计算机能听懂人类的语言,是人类自计算机诞生以来梦寐以求的想法。

随着计算机越来越向便携化方向发展,随着计算环境的日趋复杂化,人们越来越迫切要求摆脱键盘的束缚而代之以语音输人这样便于使用的、自然的、人性化的输人方式。作为高科鼓应用领域的研究热点,语音信号采集与分析从理论的研究到产品的开发已经走过了几十个春秋并且取得了长足的进步。它正在直接与办公、交通、金融、公安、商业、旅游等行业的语音咨询与管理.工业生产部门的语声控制,电话、电信系统的自动拨号、辅助控制与查询以及医疗卫生和福利事业的生活支援系统等各种实际应用领域相接轨,并且有望成为下一代操作系统和应用程序的用户界面。可见,语音信号采集与分析的研究将是一项极具市场价值和挑战性的工作。我们今天进行这一领域的研究与开拓就是要让语音信号处理技术走人人们的日常生活当中,并不断朝更高目标而努力。

语音信号采集与分析之所以能够那样长期地、深深地吸引广大科学工作者去不断地对其进行研究和探讨,除了它的实用性之外,另一个重要原因是,它始终与当时信息科学中最活跃的前沿学科保持密切的联系.并且一起发展。语音信号采集与分析是以语音语言学和数字信号处理为基础而形成的一门涉及面很广的综合性学科,与心理、生理学、计算机科学、通信与信息科学以及模式识别和人工智能等学科都有着非常密切的关系。对语音信号采集与分析的研究一直是数字信号处理技术发展的重要推动力量。因为许多处理的新方法的提出,首先是在语音信号处理中获得成功,然后再推广到其他领域。1.2国内外研究状况

早在一两千年前,人们便对语言进行了研究。由于没有适当的仪器设备,长期以来,一直是由耳倾听和用口模仿来进行研究。因此,这种语言研究常被称为“口耳之学”,所以对语音只是停留在定性的描写上。

语音信号处理真正意义上的研究可以追溯到1876年贝尔电话的发明,该技术首次

使用声电、电声转换技术实现了远距离的语音传输。1939年提出并研制成功的第一个声码器,从此奠定了语音产生模型的基础。这一发明在语音信号处理领域具有划时代的意义。19世纪60年代,亥姆霍兹应用声学方法对元音和歌唱进行了研究,从而奠定了语言的声学基础。20世纪40年代,一种语言声学的专用仪器—语谱图仪问世了。它可以把语音的时变频谱用语图表示出来,从而得出了“可见语言”。1948年美国Haskins实验室研制成功的语音回放机,该仪器可以把手工绘制在薄膜片上的语谱图自动转换成语音,并进行语音合成。20世纪50年代队语言产生了系统的论述。随着计算机的出现,语音分析工作,得以在电子计算机上进行。在此基础上,语音信号处理的研究工作得到了计算机技术的帮助,取得了突破性的进展。

语音信号处理作为一个重要的研究领域,已经有很长的研究历史。但是它的快速发展可以说是从1940年前后Dudley的声码器和Potter等人的可见语音开始的;20世纪60年代中期形成的一系列数字信号处理方法和技术,如数字滤波器、快速傅立叶变换等成为语音信号数字处理的理论和技术基础;到了80年代,由于矢量量化、隐马尔可夫模型和人工神经网络等相继被应用于语音信号处理,并经过不断改进与完善,使得语音信号处理技术产生了突破性的进展。进入90年代以来,语音信号处理在实用化方面取得了许多实质性的进展。一方面,对声学语音学统计模型的研究逐渐深入,鲁棒的语音识别、基于语音段的建模方法及隐马尔可夫模型与人工神经网络的结合成为研究的热点。另一方面,为了语音识别实用化的需要,讲者自适应、听觉模型、快速搜索识别算法以及进一步的语言模型的研究等课题倍受关注。

1.3本文的主要工作及研究步骤

1.3.1本文的主要工作

本文简要介绍了语音信号采集与分析的发展史以及语音信号的特征、采集与分析方法,并通过手机录制自己的一段声音,运用Matlab进行仿真分析,最后对于声音中的噪声进行滤波处理,比较滤波前后的变化以及介绍语音信号的特点与采集,仿真主要是验证奈奎斯特定理,对语音信号进行时域、频域上的分析,率谱,是对语音信号的综合和分析,包括语音信号的调制和滤波。

1.3.2论文的研究步骤

1.理论依据

根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,

采样定理;时域信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较),阐明设计原理。

2.信号采集

采集语音信号,并对其进行FFT频谱分析,画出信号的时域波形图和频谱图。3.构造受干扰信号并对其进行FFT频谱分析

对所采集的语音信号加入干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。并对其进行FFT频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。

4.数字滤波器设计

根据待处理信号特点,设计合适数字滤波器,绘制所设计滤波器的幅频和相频特性。

5.信号处理

用所设计的滤波器对含噪语音信号进行滤波。对滤波后的语音信号进行FFT频谱分析。画出处理过程中所得各种波形及频谱图。

对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析,阐明原因,得出结论。

1.4本文使用的软件Matlab介绍

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink两大部分[4]。MATLAB在现实中应用很广泛,如今随处可见,在各个领域都是有广泛的使用。

MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

第二章语音信号处理的总体方案

2.1运行环境及系统的基本要求

2.1.1运行的环境

运行环境主要介绍了硬件环境和软件环境。

硬件环境:

(1)处理器:Inter Core2 T6400

(2)内存:2G

(3)硬盘空间:320GB 或更高

(4)显卡:SVGA 显示适配器

软件环境:

操作系统:WindowXP

开发环境主要介绍了本系统采用的操作系统、开发语言。

(1)操作系统:WindowsXP

(2)开发环境:Matlab 7.0

2.1.2系统的基本要求

本文是用Matlab 对含噪的的语音信号同时在时域和频域进行滤波处理和分析,同时对该语音信号通过滤波器出去噪声,设计出三种滤波器,得出图形后一一比较实现语音信号的处理分析。

2.2语音信号相关调用函数介绍

2.2.1 Wavread 函数介绍

选取一段语音信号,然后在matlab 软件平台下,利用wavread 函数对语音信号进行采样,记住采样频率和采样点数。通过使用wavread 函数,理解采样频率、采样位数等概念。

wavread 函数调用格式:

y=wavread (file ),读取file 所规定的wav 文件,返回采样值放在响亮y 中。

[y,fs,nbits]=wavread(file),采样值放在向y 中,s f 表示采样频率(Hz ),nbits 表示采样位数。

y=wavread (file ,N ),读取前N 点的采样值放在向量y 中。

y=wavread (file ,[1N ,2N ]),读取从1N 到2N 点的采样值放在向量y 中。 对语音信号04.wav 进行采样其程序如下:

[y,fs,nbits]=wavread(‘larry ’)

其中:

fs =44100;(fs=44100为双声道设置频率,fs=22050为单声道设置频率) nbits =16;

y=wavread(file,[20000,65000])

2.2.2其他相关函数介绍

(1). 函数fftfilt的调用

函数fftfilt的调用格式为

y=fftfilt(b,x)

该格式是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有效。该函数是通过向量b描述的滤波器对x数据进行滤波。

(2). 函数sound的调用

函数sound可以对声音进行回放。其调用格式为:

Sound(x,fs,bits)

(3). 函数filter的调用

函数filter的调用格式为

y=filter(b,a,x)

该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR 滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。

(4).randn函数调用

rand产生的是[0,1]上的均匀分布的随机序列,randn产生均值为0,方差为1的高斯随机序列,也就是白噪声序列;

也就是说,可以直接使用上面两个函数对原始信号添加噪声,调用格式:

y=x+rand(length(x),1)或者y=x+randn(length(x),1) (5). FFT函数调用

在MATLAB的信号处理工具箱中函数FFT用于序列快速傅立叶变换。

FFT函数的一种调用格式为

fft

y x

=

(

)

其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x 的FFT。且和x相同长度。

FFT函数的另一种调用格式为:)

fft

x

=式中,x,y意义同前,N为正整数

,

(

y N

第三章语音信号处理的基本知识

3.1语音的录入和打开

在MATLAB中,[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。

sound(x,fs,bits); 用于对声音的回放。向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。

3.2采样位数和采样频率

采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。

采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机,44.1kHz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。

3.3时域信号FFT分析

FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x 为一矩阵,则y是对矩阵的每一列向量进行FFT。如果x长度是2的幂次方,函数fft 执行高速基-2FFT算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x 为矩阵,按相同方法对x进行处理

第四章语音信号的采集

4.1语音信号的采集

首先我们通过在网上下载一段语音,定义为“larry.wav”,过后在matlab软件中,利用函数wavread对语音信号进行采样,记下采样频率和采样点数。程序如下:function yuyin_00

close all;

i=1;

[x,fs,bits]=wavread('E:\larry.wav'); %x:语音数据;fs:采样频率;bits:采样点数

sound(x,fs,bits); %话音回放

N=length(x);

n=0:N-1;

figure(i);

subplot(2,1,1);

plot(n,x); %画出原始语音信号的波形

xlabel('n');

ylabel('x(n)');

title('原始语音信号');

subplot(2,1,2);

[H,f]=freqz(x,1,512,fs);

plot(f,20*log10(abs(H))); %画出原始语音信号的频谱

xlabel('n');

ylabel('x(n)');

title('原始语音信号的频谱');

运行结果:fs=22050HZ

bit=16

图4.1是原始语音信号的波形和频谱图

4.2语音信号的频谱分析

画出原始语音信号的时域波形,然后对语音信号进行FFT变换,得到原始信号的频谱特性。FFT频谱分析程序如下:

function yuyin_04

close all;

i=1;

[x,fs,bits]=wavread('E:\larry.wav'); %x:语音数据;fs:采样频率;bits:采样点数sound(x,fs,bits); %话音回放

N=length(x);

n=0:N-1;

figure(i);

subplot(2,1,1);

plot(n,x); %画出原始语音信号的波形

xlabel('n');

ylabel('x(n)');

title('原始语音信号');

subplot(2,1,2);

[H,f]=freqz(x,1,512,fs);

plot(f,20*log10(abs(H))); %画出原始语音信号的频谱xlabel('n');

ylabel('x(n)');

title('原始语音信号的频谱');

f=fft(x,N); %对语音号进行快速傅里叶变换,得出频谱i=i+1;

figure(i);

plot(abs(n),abs(f));

xlabel('k');

ylabel('|y(k)|');

title('FFT后的波形');

结果如下图:

图4.2原始信号的FFT后频谱

第五章数字滤波器的设计和画出其频率响应

5.1三种滤波器的性能指标

用窗函数法和双线性变换法设计以下三种数字滤波器,其性能指标如下:

a.低通滤波器性能指标fb=1000hz ,fc=1200hz ,最大衰减As=100db ,最小衰减Ap=1db ;

b.高通滤波器性能指标fs=4800hz,fb=5000hz, 最大衰减As=100db ,最小衰减Ap=1db ;

c.带通滤波器性能指标fb1=1200hz,fb2=3000hz ,fc1=1000hz, fc2=3200hz,最大衰减As=100db ,最小衰减Ap=1db ;

通过以上的性能指标设计出FIR与IIR两大种不同的数字滤波器。

5.2IIR滤波器与FIR滤波器的性能比较

FIR:Finite Impulse response,有限冲击响应

IIR:Infinite Impulse response,无限冲击响应

IIR与FIR两种滤波器性能比较图

从上面表格简单比较我们可以看到IIR与FIR滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。例如,从使用要求上来看,在对相位要求不敏感的场合,如语言通讯等,选用IIR较为合适,这样可以充分发挥其经济高效的特点,而对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高,如果有条件,采用FIR滤波器较好,当然,在实际应用中应考虑经济上的要求以及计算工具的条件等多方面的因素。整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。

而不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:

(1) 按照实际任务的要求,确定滤波器的性能指标。

(2) 用一个因果、稳定的离散线性时不变系统的系统函数逼近性能要求。根据系统的不同的要求可以考虑用IIR系统函数或FIR系统函数去逼近。

(3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。

5.3设计FIR滤波器

5.3.1FIR低通滤波器设计

程序设计如下:

fp=1000;fs=1200;As=120;Fs=22050; %确定技术指标

wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; %求归一化频率

wo=ws-wp; %求过渡带

beta=0.1102*(As-0.87); %求凯泽窗函数参数

N=ceil((As-8)/2.285/wo); %由过渡带决定N的值

wc=(wp+ws)/2/pi;

b=fir1(N,wc,kaiser(N+1,beta));

[Hw,w]=freqz(b,1);

figure(1);

plot(w*Fs/2/pi,20*log10(abs(Hw))); %绘制频率响应曲线

grid ;

title('FIR低通滤波器');

输出仿真结果:

图5.1凯泽窗低通滤波器的幅频特性

5.3.2FIR高通滤波器设计

程序如下:

fp=5000;fs=4800;Fs=22050;As=135; %确定技术指标wp=2*pi*fp/Fs;ws=2*pi*fs/Fs; %求归一化频率wo=wp-ws; %求过渡带

beta=0.1102*(As-0.87); %求凯泽窗函数参数

N=ceil((As-8)/2.285/wo); %由过渡带决定N的值

wc=(wp+ws)/2/pi;

b=fir1(N,wc,'high',kaiser(N+1,beta));

[Hw,w]=freqz(b,1);

figure(1);

plot(w*Fs/2/pi,20*log10(abs(Hw)));

grid ;

title('FIR高通滤波器的幅频特性');

输出仿真结果如下:

图5.2凯泽窗高通滤波器的幅频特性

5.3.3FIR带通滤波器的设计

程序如下:

fb1=1000;fc1=1200;fb2=3000;fc2=3200; %确定技术指标rs=120;Fs=22050;

wp1=2*pi*fc1/Fs;ws1=2*pi*fb1/Fs; %求归一化频率wp2=2*pi*fb2/Fs;ws2=2*pi*fc2/Fs;

wo1=wp1-ws1;wo2=ws2-wp2; wo=max(wo1,wo2); %求过渡带beta=0.1102*(rs-0.87); %求凯泽窗函数参数

N=ceil((rs-8)/2.285/wo); %由过渡带决定N的值

wn1=(fb1+fc1)/Fs;wn2=(fb2+fc2)/Fs;wn=[wn1,wn2];

b=fir1(N,wn,'band',kaiser(N+1,beta));

[Hw,w]=freqz(b,1,512,Fs);

figure(1);

plot(w,20*log10(abs(Hw))); %绘制频率响应曲线

grid ;

title('FIR带通滤波器');

仿真结果如下:

图5.3凯泽窗带通滤波器的幅频特性

5.4设计IIR滤波器

5.4.1IIR低通滤波器的设计

程序设计如下:

fp=1000;fs=1200;Fs=22050; %确定技术指标

Ap=1;As=10;

wp=2*pi*fp/Fs; %归一化,求得数字边缘频率ws=2*pi*fs/Fs;

Ts=1/Fs;

wap=2/Ts*tan(wp/2); %将数字指标转换成模拟指标was=2/Ts*tan(ws/2);

[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数

[z,p,k]=buttap(N); %创建butterworth模拟滤波器

[Bap,Aap]=zp2tf(z,p,k);

[b,a]=lp2lp(Bap,Aap,wc);

[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,w]=freqz(bz,az);

figure(1);

plot(w*Fs/(2*pi),20*log10(abs(H))); %绘制频率响应曲线

grid;

axis([0,3000,-20,2]);

xlabel('频率/Hz');

ylabel('幅度/dB');

title('巴特沃兹低通滤波器');

仿真结果如下:

图5.4巴特沃兹低通滤波器的幅频特性

5.4.2IIR高通滤波器设计

程序设计如下:

fp=5000;fs=4800;Fs=22050; %确定技术指标

Ap=1;As=10;

wp=2*pi*fp/Fs; %归一化,求得数字边缘频率

ws=2*pi*fs/Fs;

Ts=1/Fs;

wap=2/Ts*tan(wp/2); %将数字指标转换成模拟指标

was=2/Ts*tan(ws/2);

[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数

[z,p,k]=buttap(N); %创建butterworth模拟滤波器[Bap,Aap]=zp2tf(z,p,k);

[b,a]=lp2hp(Bap,Aap,wc);

[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换[H,w]=freqz(bz,az);

figure(1);

plot(w*Fs/(2*pi),20*log10(abs(H))); %绘制频率响应曲线

grid;

axis([3000,6000,-20,2]);

xlabel('频率/Hz');

ylabel('幅度/dB');

title('巴特沃兹高通滤波器');

仿真结果如下:

图5.5巴特沃兹高通滤波器的幅频特性

5.4.3IIR带通滤波器设计

程序设计如下:

fp1=1200;fp2=3000;fs1=1000;fs2=3200;Fs=22050;%确定技术指标

Ap=1;As=10;

wp1=2*pi*fp1/Fs;wp2=2*pi*fp2/Fs; %归一化,求得数字边缘频率ws1=2*pi*fs1/Fs;ws2=2*pi*fs2/Fs;

Ts=1/Fs;

wap1=2/Ts*tan(wp1/2);wap2=2/Ts*tan(wp2/2);

%将数字指标转换成模拟指标

was1=2/Ts*tan(ws1/2);was2=2/Ts*tan(ws2/2);

wap=[wap1,wap2];was=[was1,was2];

W1=(wap1+was1)/2;W2=(wap2+was2)/2;

Bw=W2-W1; %求带宽

wo=sqrt(W1*W2);

[N,wc]=buttord(wap,was,Ap,As,'s'); %选择滤波器的最小阶数

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

Top