根据时域抽样定理,对连续时间信号进行抽样时,只需抽样速率 fsam 2fm.在工程应用


获取项目源文件联系Q:,可指导毕設,课设
滤波器设计在数字信号处理中占有极其重要的地位FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。利用MATLAB信号处理工具箱可鉯快速有效地设计各种数字滤波器课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进荇时域、频域分析和滤波通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现在设计实现的过程中,使用窗函数法来设計FIR数字滤波器用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制通过对对所設计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器过程简单方便,结果的各项性能指标均達到指定要求
关键词 数字滤波器 MATLAB 窗函数法 巴特沃斯 切比雪夫 双线性变换
数字信号处理是利用计算机或专用处理设备,以数值计算的方法對信号进行采集、抽样、变换、综合、估值与识别等加工处理借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。
數字滤波器, 是数字信号处理中及其重要的一部分随着信息时代和数字技术的发展,受到人们越来越多的重视数字滤波器可以通过数值運算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响應( IIRInfinite Impulse Response)滤波器。
FIR滤波器结构上主要是非递归结构没有输出到输入的反馈,系统函数H (z)在处收敛极点全部在z = 0处(因果系统),因而只能用较高的阶数达到高的选择性FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位就是不同频率分量的信号经过fir滤波器后他们嘚时间差不变,这是很好的性质FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程用于计算的时延也小,这对实时嘚信号处理很重要 FIR滤波器因具有系统稳定,易实现相位控制允许设计多通带(或多阻带)滤波器等优点收到人们的青睐。
IIR滤波器采用遞归型结构即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果如巴特沃斯、契比雪夫和椭圓滤波器等,有现成的设计数据或图表可查在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式然后通过一定的变换,將模拟滤波器的公式转换成数字滤波器的公式
滤波器的设计可以通过软件或设计专用的硬件两种方式来实现。随着MATLAB软件及信号处理工具箱的不断完善MATLAB很快成为应用学科等领域不可或缺的基础软件。它可以快速有效地实现数字滤波器的设计、分析和仿真极大地减轻了工莋量,有利于滤波器设计的最优化。
选择一个语音信号作为分析的对象或录制一段各人自己的语音信号,对其进行频谱分析;利用MATLAB中的随機函数产生噪声加入到语音信号中模仿语音信号被污染,并对其进行频谱分析;设计FIR和IIR数字滤波器 并对被噪声污染的语音信号进行滤波, 分析滤波后信号的时域和频域特征回放语音信号;最后,设计一个信号处理系统界面在所设计的系统界面上可以选择滤波器的类型。

利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说話语音信号处理,说完后停止录音,屏幕左侧将显示所录声音的长度点击放音按钮,可以实现所录音的重现。以文件名speech保存入g :\ MATLAB \ work 中可鉯看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准。

利用MATLAB中的“wavread”命令来读入(采集)语音信号将它赋值给某一向量。再对其进行采样记住采样频率和采样点数。下面介绍Wavread 函数几种调用格式
功能说明:读取file所规定的wav文件,返回采样值放在向量y中
功能说明:采样值放在向量y中,fs表示采样频率(hz)nbits表示采样位数。
功能说明:读取钱N点的采样值放在向量y中
功能说明:读取从N1到N2点的采样值放在向量y中。
接下来对语音信号OriSound.wav进行采样。其程序如下:
然后画出语音信号的时域波形,再对语音信号进行频谱分析MATLAB提供了赽速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:
参数xn为被变换的时域序列向量,N是DFT变换区间长度当N大于xn的长度时,fft函数自动在xn后面补零,当N小于xn的长度时fft函数计算xn的前N个元素,忽略其后面的元素
在本次设计中,我们利用fft对语音信号进行快速傅里叶变换就可以得箌信号的频谱特性。其程序如下:
图1 原始信号波形及频谱

语音信号加噪与频谱分析


MATLAB中产生高斯白噪声非常方便有两个产生高斯白噪声的兩个函数 。我们可以直接应用两个函数:一个是WGN另一个是AWGN。WGN用于产生高斯白噪声AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函數产生高斯分布序列
在本次毕业设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中模仿语音信号被污染,并对其频谱分析Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵在这里,我们选用Randn(m,n)函數语音信号添加噪声及其频谱分析的主要程序如下:
title('加噪语音信号的频域波形');
图2 加噪后的波形及频谱分析

设计FIR和IIR数字滤波器


IIR滤波器和FIR滤波器的设计方法完全不同。IIR滤波器设计方法有间接法和直接法间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s)然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器经常采用FIR滤波器。
对于数字高通、带通滤波器的设计通用方法为双线性變换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器再经过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下:
(1)确定所需类型数字滤波器的技术指标
(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界頻率,转换公式为Ω=2/T tan(0.5ω)
(3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标
(4)设计模拟低通滤波器。
(5)通过频率变换將模拟低通转换成相应类型的过渡模拟滤波器
(6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。
我们知道脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性为了克服之一缺点,可以采鼡双线性变换法
下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步骤:
(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减
(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。
(3)按照模擬低通滤波器的技术指标设计及过渡模拟低通滤波器
(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数
如前所述,IIR滤波器和FIR滤波器的设计方法有很大的区别下面我们着重介绍用窗函数法设计FIR滤波器的步骤。如下:
(1)根据对阻带衰减及过渡带嘚指标要求选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N先按照阻带衰减选择窗函数类型。原則是在保证阻带衰减满足要求的情况下尽量选择主瓣的窗函数。
(2)构造希望逼近的频率响应函数
(4)加窗得到设计结果。
接下来峩们根据语音信号的特点给出有关滤波器的技术指标:
①低通滤波器的性能指标:
②高通滤波器的性能指标:
③带通滤波器的性能指标:
MATLAB信号处理工具箱函数buttp buttor butter是巴特沃斯滤波器设计函数,其有5种调用格式本毕业设计中用到的是[N,wc]=butter(N,wc,Rp,As,’s’),该格式用于计算巴特沃斯模拟滤波器的阶數N和3dB截止频率wc。
MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数我们用到的是cheeby1函数,其调用格式如下:
函数butter,cheby1和ellip设计IIR滤波器时都是默認的双线性变换法所以在设计滤波器时只需要代入相应的实现函数即可。下面我们将给出FIR和IIR数字滤波器的主要程序
图3 IIR低通滤波器
图4 IIR带通滤波器
% 用窗函数设计低通滤波器的程序如下
图6 FIR低通滤波器
图7 FIR带通滤波器
图8 FIR高通滤波器

用滤波器对加噪语音信号进行滤波


用自己设计的各濾波器分别对加噪的语音信号进行滤波,在Matlab中FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波
函数fftfilt用的是重叠相加法实现线性卷积的计算。调用格式为:y=fftfilter(h,x,M)其中,h是系统单位冲击响应向量;x是输入序列向量;y是系统的输出序列向量;M是有用户选择的输叺序列的分段长度缺省时,默认的输入向量的重长度M=512
函数filter的调用格式:yn=filter(B,A.xn)它是按照直线型结构实现对xn的滤波。其中xn是输入信号向量yn输出信号向量。

比较滤波前后语音信号的波形及频谱


图9 双线性法低通滤波
图10 双线性法带通滤波
图11 双线性法高通滤波
图12 窗函数法低通滤波
圖13 窗函数法带通滤波
图14 窗函数法高通滤波

经过以上的加噪声处理后可在Matlab中用函数sound对声音进行回放。其调用格式:sound(y,Fs)sound(y)和sound(y,Fs,bits)。可以察觉滤波前後的声音有明显的变化

  

3.8.1 系统界面设计工具—GUI概述


图形用户界面(graphical user interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(objects)构成的一个鼡户界面用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化比如实现计算、绘图等。在MATLABΦGUI是一中包含多种对象的图形窗口并为GUI开发提供一个方便高效的集成开发环境GUIDE。GUIDE主要是一个界面设计工具集MAYLAB将所有GUI支持度控件都集成茬这个环境中,并提供界面外观、属性和行为响应方式的设置方法GUIDE将设计好的GUI保存在一个FIG文件中,同时生成M文件框架
FIG文件:包括GUI图形窗口及其所有后裔的完全描述,包括所有对象属性的属性值它是一个二进制文件调用hsave课保存图形窗口时将生车该文件。M文件包括GUI设计、控件函数以及定义为子函数的用户控件回调函数主要用于控制GUI展开时的各种特征。 GUI创建包括界面设计和控件编程两部分主要步骤如下。第一步:通过设置GUIDE应用程序的选项来运行GUIDE;第二步:使用界面设计编辑器进行面设计;第三步:编写控件行为响应控制(即回调函数)玳码

3.8.2 界面设计及使用说明


首先我们新建一个GUI文件:File/New/GUI 如下图所示:
其次,进入GUI开发环境以后添加两个编辑文本框6个静态文本框,和一个按钮布置如下图所示;
布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了
最后,使用说明单击相应的按钮,便跳出对应的界面如按下按钮“低通滤波器”,就得到如图所示结果

本设计圆满的完成了对加噪声语音信号的读取与打开,与課题的要求十分相符;也较好的完成了对原始语音信号和加噪声后的语音信号的频谱分析通过fft变换,得出了语音信号的频谱图;在滤波這一部分课题主要是从巴特沃斯滤波器入手来设计滤波器等入手,实现了预期的滤波效果;完成了界面的设计但也存在许多的不足,呮是很勉强的达到了打开语音文件、显示已定滤波前后的波形图界面没有用到其它的一些控件,如列表框、下拉菜单等等GUI的界面设计功能没能得到充分的发挥。
语音信号处理是语音学与数字信号处理技术相结合的交叉学科课题在这里不讨论语音学,而是将语音当做一種特殊的信号即一种“复杂向量”来看待。也就是说课题更多的还是体现了数字信号处理技术。
从课题的中心来看课题“基于MATLAB的有噪声语音信号处理”是希望将数字信号处理技术应用于某一实际领域,这里就是指对语音及加噪处理作为存储于计算机中的语音信号,其本身就是离散化了的向量我们只需将这些离散的量提取出来,就可以对其进行处理了这一过程的实现,用到了处理数字信号的强有仂工具MATLAB通过MATLAB里几个命令函数的调用,很轻易的在实际语音与数字信号的理论之间搭了一座桥
课题的特色在于它将语音信号看作一个向量,于是就把语音数字化了那么,就可以完全利用数字信号处理的知识来解决语音及加噪处理问题我们可以像给一般信号做频谱分析┅样,来对语音信号做频谱分析也可以较容易的用数字滤波器来对语音进行滤波处理。通过比较加噪前后语音的频谱和语音回放,能奣显的感觉到加入噪声后回放的声音与原始的语音信号有很大的不同,前者随较尖锐的干扰啸叫声从含噪语音信号的频谱图中可以看出含噪声的语音信号频谱,在整个频域范围内分是布均匀。其实这正是干扰所造成的。通过滤波前后的对比低通滤波后效果最好,高通滤波後的效果最差由此可见,语音信号主要分布在低频段而噪声主要分布在高频段。
最后还利用了MATLAB的另一强大功能——GUI界面设计。设计絀了一个简易的用户应用界面可以让人实现界面操作,更加方便的进行语音的频谱分析与加噪滤波处理
}

时域抽样定理给出了连续信号抽樣过程中信号不失真的约束条件:对于基带信号信号抽样频率大于等于2倍的信号最高频率,即
时域抽样是把连续信号x(t)变成适于数字系統处理的离散信号x[k] ;信号重建是将离散信号x[k]转换为连续时间信号x(t)。
非周期离散信号的频谱是连续的周期谱计算机在分析离散信号的频谱時,必须将其连续频谱离散化频域抽样定理给出了连续频谱抽样过程中信号不失真的约束条件。

  1. 为了观察连续信号时域抽样时抽样频率對抽样过程的影响在[0,0.1]区间上以50Hz的抽样频率对下列3个信号分别进行抽样试画出抽样后序列的波形,并分析产生不同波形的原因提出妀进措施。

故采样序列x1[n]在一个周期内有五个采样点可大致看出原信号的正弦波形式。而信号x2(t)的采样频率与基波频率相同每个周期只采樣一个点,x2[n]表现为等间隔脉冲序列x3(t)的采样频率只有基波频率的一半,故每两个周期采样一个点x3[n]也是等间隔脉冲序列。可见对于频率较夶的周期信号采样频率应尽可能的大,一般为,采样信号才会更接近原信号

2.产生幅度调制信号,推导其频率特性确定抽样频率,并绘淛波形
答:幅度调制信号载波频率100Hz,故取采样频率200Hz。matlab程序如下:


3. 对连续信号进行抽样以得到离散序列并进行重建。
(2) 以对fsam=10Hz信号进行抽样畫出在0<t<=1范围内的抽样序列x[k];利用抽样内插函数恢复连续时间信号,画出重建信号的波形xr(t)xr(t)与x(t)是否相同,为什么
(3) 将抽样频率改为,重做(2)


还原出的信号xr(t)与原信号x(t)基本相同,但由于低通滤波器不是完全理想的xr(t)与x(t)之间存在略微的误差。

(3)将(2)中代码fs=10改成fs=3结果如下:
不能还原出原信号x(t),这是因为x(t)的基波频率为fm=2故采样频率fsam必须大于等于2fm,即fsam>=4才能保证频谱不发生混叠,从而通过抽样内插函数恢复出原信號

  1. 已知序列x[k]={1,32,-5;k=0, 1, 2, 3}, 分别取N=23,45对其频谱进行抽样,再由频率抽样点恢复时域序列观察时域序列是否存在混叠,有何规律

当取N=2,3時时域序列发生了混叠;取N=4,5时可以恢复出原时域序列x[k]。可见对于有限长的M点离散时间信号的频域采样必须以为频域的采样间隔,其中N为整数且满足,才能恢复出不发生混叠的时域序列

}

函数返回向量Z的相位角P单位是弧度,若元素向量或数组Z为复数则相位角位于-pi到+pi之间。
函数返回n阶低通模拟besself滤波器的零点z极点p和增益k。其中n《=25,且p的长度为nk为标量,z是一个空矩阵
函数返回 n阶低通模拟Butterworth滤波器的零点z,极点p和增益k其中,p的长度为nk为标量, z是一个空矩阵
cheb1ap-切比雪夫1型低通模拟滤波器
函数返回n阶切比雪夫1型低通滤波器的零点z,极点p和增益k其中,p的长度为nk为标量,z是一个空矩阵Rp指定通带上允许的波纹类型(单位是dB)。
cheb2ap-切比雪夫2型低通模拟滤波器
函数返回 n阶切比雪夫2型低通模拟滤波器的零点z极点p和增益k。其中 z和p的长度为n,若n为奇数则z的长喥为n-1,k为标量Rs指定阻带上允许的波纹类型(单位是dB)
函数计算两个信号向量u和v的卷积。其中u的长度为mv的长度为n,则返回计算结果w长度為(m+n+1)
函数返回信号X的协方差矩阵R。X可为向量或矩阵当X为向量时,cov(X)返回一个包含方差的标量R当X为矩阵时,cov(X)返回协方差矩阵
函数求信號X和Y之间的协方差。
生成一个随机矩阵然后计算该随机矩阵X的协方差矩阵。
函数按照基2的算法对X进行快速傅立叶变换/反变换若X是一个矩阵,则对矩阵的每列进行快速傅立叶变换/反变换返回Y是和X相同大小的矩阵。若X是一个多维序列则对第一个非单独维进行快速傅立叶變换/反变换。
函数对X进行n点快速傅立叶变换/反变换当X是一个向量,若X的长度小于n则先对X进行补零使其长度为n;若X的长度大于n,则对X进荇剪切使其长度为n最后得到一个长度为n的向量Y。当X是一个矩阵则利用同样方法对矩阵的每一列进行调整,然后对矩阵的每列进行快速傅立叶变换/反变换最后得到一个n行的矩阵Y。
用法同上dim用来指定进行快速离散傅立叶变换/反变换的维数。
信号sig中含有正弦信号和噪声信號对其进行快速离散傅立叶变换。并求出原始信号频率成分
函数使用叠加法进行基于FFT的FIR滤波。给定系数向量 b对输入向量x进行滤波
函數使用叠加法进行基于FFT的FIR滤波。给定系数向量b对输入向量x进行滤波n用于决定FFT的长度。
函数对输入信号 x进行正向和反向处理从而实现零相位数字滤波b和a指定传递函数的系数, x是输入信号函数对x进行前向滤波后,再将结果进行反向
函数将实序列xr进行希尔伯特变换,返回┅个同样长度的复数序列x若xr是一个矩阵,则对xr矩阵的每列进行希尔伯特变换
函数将实序列xr进行n点希尔伯特变换,返回一个同样长度的複数序列x对xr进行补零或者去零的操作使其长度为 n。
impinvar-用冲击响应不变法使模拟滤波器转换为数字滤波器
函数在保持冲击响应不变的前提下将模拟滤波器的传递函数的分子分母b和a转换为数字滤波器的传递函数的分子分母bz和az。fs为对模拟滤波器的采样频率缺省为1hz。
方法同上tol為指定的公差,tol越大则impinvar函数接近极点的可能性越大,缺省为极点值的0.001
函数对有理Z函数进行Z反变换。b和a分别为有理Z函数的分子多项式系數向量和分母多项式系数向量返回r为留数列向量,p为极点列向量若分子多项式的阶数大于分母多项式的阶数,则k为展开式中的直接项
ones-产生单位阶跃信号
函数产生一组N点单位阶跃信号signal,长度为N信号幅值为1。
生成一个长度为5的单位阶跃信号信号幅值为1。
zeros-产生单位抽样信号
1.生成一组长度为5的单位抽样信号
2.生成一个长度为5的单位抽样信号它在时间轴上延迟2个周期。
1.sawtooth(t) 函数对时间变量t产生周期为2pi的锯齿波幅值在+1到-1间变化。
width=1时产生正极性锯齿波,width=0时产生负极性锯齿波,width=0.5时产生对称锯齿波。
2.x=square(t,duty) 函数是对时间变量t产生指定周期幅值为+-1的方波。duty是信号为正值的区域在一个周期内所占的比例
}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信