数字信号处理课程设计.doc_第1页
数字信号处理课程设计.doc_第2页
数字信号处理课程设计.doc_第3页
数字信号处理课程设计.doc_第4页
数字信号处理课程设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数 字 信 号 处 理课程设计 院系:电子信息与电气工程学院 专业: 电子信息工程专业 班级: 电信 班 姓名: 学号: 组员: 摘 要滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现。在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制。通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。关键词 数字滤波器 MATLAB 窗函数法 巴特沃斯 16目 录 摘 要11 引言11.1课程设计目的11.2 课程设计内容及要求11.3课程设计设备及平台11.3.1 数字滤波器的简介及发展11.3.2 MATLAB软件简介22 课程设计原理及流程43.课程设计原理过程43.1 语音信号的采集43.2 语音信号的时频分析53.3合成后语音加噪声处理73.3.1 噪声信号的时频分析73.3.2 混合信号的时频分析93.4滤波器设计及消噪处理103.4.1 设计IIR和FIR数字滤波器103.4.2 合成后语音信号的消噪处理133.4.3 比较滤波前后语音信号的波形及频谱133.4.4回放语音信号153.5结果分析154 结束语155 参考文献161 引言1.1课程设计目的(1)学会MATLAB的使用,掌握MATLAB的程序设计方法;(2)掌握在Windows环境下语音信号采集的方法;(3)掌握数字信号处理的基本概念、基本理论和基本方法;(4)掌握MATLAB设计IIR滤波器和FIR滤波器;(5)学会用MATLAB对信号进行分析和处理。1.2 课程设计内容及要求选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计IIR和FIR数字滤波器, 并对被噪声污染的语音信号进行滤波, 分析滤波后信号的时域和频域特征,回放语音信号。1.3课程设计设备及平台1.3.1 数字滤波器的简介及发展数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。从数字滤波器的单位冲击响应来看,可以分为两大类:有限冲击响应(FIR)数字滤波器和无限冲击响应(IIR)数字滤波器。滤波器按功能上分可以分为低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器(BSF)。相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用将会越来越广泛。同时DSP处理器的出现和FPGA的迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬件实现提供了更多的选择。数字滤波器具有以下显著优点:精度高:模拟电路中元件精度很难达到10-3,以上,而数字系统17位字长就可以达到10-5精度。因此在一些精度要求很高的滤波系统中,就必须采用数字滤波器来实现。1灵活性大:数字滤波器的性能主要取决于乘法器的各系数,而这些系数是存放在系数存储器中的,只要改变存储器中存放的系数,就可以得到不同的系统,这些都比改变模拟滤波器系统的特性要容易和方便的多,因而具有很大的灵活性。可靠性高:因为数字系统只有两个电平信号:“1”和“0”,受噪声及环境条件的影响小,而模拟滤波器各个参数都有一定的温度系数,易受温度、振动、电磁感应等影响。并且数字滤波器多采用大规模集成电路,如用CPLD或FPGA来实现,也可以用专用的DSP处理器来实现,这些大规模集成电路的故障率远比众多分立元件构成的模拟系统的故障率低。易于大规模集成:因为数字部件具有高度的规范性,便于大规模集成,大规模生产,且数字滤波电路主要工作在截止或饱和状态,对电路参数要求不严格。因此产品的成品率高,价格也日趋降低。相对于模拟滤波器,数字滤波器在体积、重量和性能方面的优势己越来越明显。比如在用一些用模拟网络做的低频滤波器中,网络的电感和电容的数值会大到惊人的程度,甚至不能很好地实现,这时候若采用数字滤波器则方便的多。并行处理数字滤波器的另外一个最大优点就是可以实现并行处理,比如数字滤波器可采用DSP处理器来实现并行处理。在很多实际应用中如语音和音频信号处理中,数字滤波器来实现选频功能。因此,指标的形式应为频域中的幅度和相位响应。1.3.2 MATLAB软件简介20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。 MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。MATLAB具有许多的优点比如:语言简洁紧凑,使用方便灵活,库函数极其丰富;MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性;程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行,等等优点。MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。(1)MATLAB常用基本数学函数 :abs(x):纯量的绝对值或向量的长度 、angle(z):复数z的相角(Phase angle)、 sqrt(x):开平方、 real(z):复数z的实部、imag(z):复数z的虚部、conj(z):复数z的共轭复数、round(x):四舍五入至最近整数、fix(x):无论正负,舍去小数至最近整数、floor(x):地板函数,即舍去正小数至最近整数、ceil(x):天花板函数,即加入正小数至最近整数、rat(x):将实数x化为多项分数展开 、rats(x):将实数x化为分数表示 、sign(x):符号函数 (Signum function)。当x0时,sign(x)=1。rem(x,y):求x除以y的馀数gcd(x,y):整数x和y的最大公因数、lcm(x,y):整数x和y的最小公倍数、exp(x) :自然指数pow2(x):2的指数、log(x):以e为底的对数,即自然对数或、log2(x):以2为底的对数、log10(x):以10为底的对数sin(x):正弦函数、cos(x):余弦函数、tan(x):正切函数 。3(2)MATLAB作图语句:一维数组即一个行向量或列向量的作图用“plot”命令画。这时横轴表示数组中各数的序号。“plot”还可以用指定的自变量数组和对应的函数数组来作图。如果是二维数组,则横、纵轴分别表示第1个向量和第2个向量。函数subplot可以把一个图形窗分为几个区域,在每个区域中分别绘图。此外,还可以绘制三维图形(mesh)、直方图(hist)、等值线图(contour)等。(3)控制语句:MATLAB有和其他高级语言相类似的控制语句,如循环(for)、中止循环(break)、条件(if,while)等。(4)用于数字信号处理的工具箱Signal它包含数字信号处理常用的滤波器设计、傅里叶变换、z变换等。2 课程设计原理及流程课程设计具体流程如下:(1)语音信号的采集;(2)语音信号的频谱分析;要求首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性;从而加深对频谱特性的理解;(3)数字滤波器的设计;低通滤波器性能指标wp=0.2*pi,ws=0.5*pi,rs50dB,rp1 dB。在MATLAB中,可以用双线性变换法设计IIR数字滤波器,利用函数fir1设计FIR数字滤波器。(4)对语音信号进行滤波处理;(5)对滤波前后的语音信号频谱进行对比分析。3.课程设计原理过程3.1 语音信号的采集要求利用windows下的录音机(开始程序附件娱乐录音机,文件属性立即转换8000KHz,8位,单声道)或其他软件,录制一段自己的话音,时间控制在1秒左右。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用,要求理解采样频率、采样位数等概念。3.2 语音信号的时频分析利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。下面介绍Wavread 函数几种调用格式。(1)y=wavread(file)功能说明:读取file所规定的wav文件,返回采样值放在向量y中。(2)y,fs,nbits=wavread(file) 功能说明:采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。(3)y=wavread(file,N)功能说明:读取钱N点的采样值放在向量y中。(4)y=wavread(file,N1,N2)功能说明:读取从N1到N2点的采样值放在向量y中。接下来,对语音信号进行采样。其程序如下: y,fs,nbits=wavered(D:guan.wav ); %把语音信号加载入Matlab 仿真软件平台中然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:Xk=fft(xn,N)参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。其程序如下,波形如图3-1所示:wav,fs,Nbits =wavread(D:guan.wav ) ;n=length(wav); %求出声音长度t=0:1/fs:(n-1)/fs; %时间t 从0到n-1sound(wav,fs) ; %对加载的语音信号进行回放subplot(2,2,1) ;hold on;plot(wav); %做原始语音信号的时域图形title(原始语音信号时域波形12037102);%傅里叶变换y1=fft(wav,n) ; subplot(2,2,2) ;hold on;plot(y1); %做原始语音信号的傅里叶变换title(原始语音傅里叶变换12037102); %对原始信号频域分析subplot(2,2,3) ;hold on;plot(abs(y1); %原始信号的频谱图像title(原始信号的频谱分析12037102);图3-1 原始信号波形及频谱3.3合成后语音加噪声处理3.3.1 噪声信号的时频分析 创建一个噪声信号,该噪声信号为noise=800000000*sin(2*pi*fs*t)。其中噪声信号Au=800000000;pi为圆周率3.14;fs为提取的原始声音信号的频率值,时间t为从0到(n-1)/fs的每隔1/fs取一个值的一个函数,即t=0:1/fs:(n-1)/fs(其中n=length(wav),为原始信号波的长度),时间长度和原始信号的长度一样。获得的噪声不是一个标准的正弦波,而是一个幅值随时间非线性增大的波,这样的波比较符合现实中嘈杂的环境。分析噪声信号的傅里叶变换和频谱。具体程序如下,波形如图3-2所示:wav,fs,Nbits =wavread(D:guan.wav ) ;n=length(wav); t=0:1/fs:(n-1)/fs;%噪声信号 为正弦波noise=800000000*sin(2*pi*fs*t); subplot(2,2,1) ;hold on;plot(noise); %噪声信号title(噪声信号12037102);sound(noise,fs) ; %对噪声信号进行回放 %噪声信号傅里叶变换 noifft=fft(noise);subplot(2,2,2) ;hold on;plot(noifft); %做噪声信号傅里叶变换图形title(噪声信号傅里叶变换12037102);%对噪声信号频域分析subplot(2,2,3) ;hold on;plot(abs(noifft); %做噪声信号频谱分析title(噪声信号频谱分析12037102);图3-2 噪声信号波形及频谱3.3.2 混合信号的时频分析 将噪声信号和原始信号进行叠加。因为原始声音信号wav为n,2n行2列的矩阵,而噪声信号为1,n1行n列的矩阵,所以要想这两个矩阵相加,必须做一些基本变换。首先对噪声信号进行转置:noiseT=noise,然后在对新的信号加上一列空值,即wavch=noise,zeros(n,1)其中n为声音信号的长度。之后将声音信号和噪声信号叠加,即将两个矩阵相加wavbo=wavch+wav。分析叠加后混合信号的的傅里叶变换和频谱. 具体程序如下,波形如图3-3所示:wav,fs,Nbits =wavread(D:guan.wav ) ;n=length(wav); t=0:1/fs:(n-1)/fs; noise=800000000*sin(2*pi*fs*t); %对噪声进行变换n2=length(noise);wavch=noise,zeros(n2,1); %对噪声进行变换,转换成为和原始信号一样的矩阵wavbo=wavch+wav; %噪声叠加sound(wavbo,fs);subplot(2,2,1) ;hold onplot(wavbo); %混合信号title(混合信号12037102);%加入噪声的信号频谱分析wavbofft=fft(wavbo,n);subplot(2,2,2) ;hold onplot(wavbofft); %做混合信号的傅里叶变换title(混合信号傅里叶变换12037102);%混合信号频谱分析subplot(2,2,3) ;hold on plot(abs(wavbofft); %混合信号的频谱分析title(混合信号频谱分析12037102);图3-3 混合信号波形及频谱在图3-3中,绿色的代表的是原始语音信号的波形和频谱图,蓝色的代表的是混合信号的波形和频谱图。通过上面图片的对比,很明显可以看到混合信号时域波形比原始语音信号浑浊了许多;通过对原始语音信号的频谱图与加噪后的语音信号频谱图的对比,也可以看出在频率200000Hz以后的频率幅值发生了明显的增加。加噪后的语音信号在听觉上比原始语音信号要浑浊很多,而且还有吱吱的混杂音。3.4滤波器设计及消噪处理3.4.1 设计IIR和FIR数字滤波器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)构造希望逼近的频率响应函数。(3)计算h(n).。(4)加窗得到设计结果。 在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1和ellip设计IIR滤波器。hn=fir1(M,wc,window),可以指定窗函数向量window。如果缺省window参数,则fir1默认为海明窗。其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman窗,其相应的都有实现函数。在本课程里面,As=MATLAB信号处理工具箱函数buttp buttor butter是巴特沃斯滤波器设计函数,其有5种调用格式,本课程设计中用到的是N,wc=butter(N,wc,Rp,As,),该格式用于计算巴特沃斯数字滤波器。 函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。通过对原始信号和噪声信号的分析可知,采用一个低通滤波器可以最大效果地将原始波形从混合波形中提取出来。下面我们将给出FIR和IIR数字低通滤波器的主要程序如下,波形如图3-4所示:IIR数字滤波器: FIR数字滤波器: wp=0.2; rp=1; wp=0.2*pi;ws=0.5*pi;ws=0.5; rs=50; B=ws-wp;N, wc=buttord(wp,ws,rp,rs); N=ceil(8*pi/B);B, A=butter(N,wc); wc=(wp+B/2)/pi;hn=fir1(N-1,wc);图3-4 混合信号波形及频谱3.4.2 合成后语音信号的消噪处理用自己设计的各滤波器分别对加噪的语音信号进行滤波,在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输出信号向量。滤波器调用程序如下:FIR数字滤波器 lv=fftfilt(hn,wavbo); IIR数字滤波器 lv=filter(B,A,wavbo);3.4.3 比较滤波前后语音信号的波形及频谱FIR数字滤波器滤波前后波形如图3-5所示,对滤波前后语音信号的分析:图3-5 滤波前后信号波形及频谱这是窗函数法设计的滤波器滤波,从图3-5我们可以看到噪音信号大部分被滤除了。IIR数字滤波器滤波前后波形如图3-6所示,对滤波前后语音信号的分析:图3-6 滤波前后信号波形及频谱图3-6我们可以看出,经过巴特沃斯滤波后,语音信号基本上被提取出来,运行程序后,可以听到较纯的语音。观察图35和36,发现两种滤波器的滤波效果几乎相同。3.4.4回放语音信号 经过以上的加噪声处理后,可在Matlab中用函数sound对声音进行回放。其调用格式:sound(y,Fs),sound(y)和sound(y,Fs,bits)。可以察觉滤波前后的声音有明显的变化。3.5结果分析语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,课题更多的还是体现了数字信号处理技术。 课题的特色在于它将语音信号看作一个向量,于是就把语音数字化了。那么,就可以完全利用数字信号处理的知识来解决语音及加噪处理问题。我们可以像给一般信号做频谱分析一样,来对语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。通过比较加噪前后,语音的频谱和语音回放,能明显的感觉到加入噪声后回放的声音与原始的语音信号有很大的不同,前者随较尖锐的干扰啸叫声。从含噪语音信号的频谱图中可以看出含噪声的语音信号频谱,在整个频域范围内分是布均匀。其实,这正是干扰所造成的。通过滤波前后的对比,低通滤波器能过很好的提取出原始语

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论