数字信号处理课程设计报告1

时间:2024.4.14

数字信号处理课程设计报告

       题    目:  语音信号频谱分析仪的设计 

       专业:电子信息工程

       班级:电信11-01  

       姓名:  武政磊    

       学号:311108000925

       指导老师:王科平  

     

                                    20##年1月7日


       

1.课程设计目的及意义.............................. 1

2. 课程设计题目描述要求及理论基础.................. 1

2.1题目要求................................... 1

2.2 数字滤波器的简介及发展...................... 2

2.3 FIR数字滤波器的特点........................ 3

2.4 FIR滤波器具有的优点........................ 3

2.5 MATLAB软件简介............................ 4

3. 课程设计报告内容............................... 5

3.1 设计方案的选定与原理........................ 5

3.2 用窗函数法设计FIR滤波器.................... 7

3.3设计方案程序及图表.......................... 8

4.总结.......................................... 12

参考书目:...................................... 13

1.课程设计目的及意义

(1)学会MATLAB的使用,掌握MATLAB的程序设计方法;

(2)掌握在Windows环境下语音信号采集的方法;

(3)掌握数字信号处理的基本概念、基本理论和基本方法;

(4)掌握MATLAB设计FIR滤波器;

(5)学会用MATLAB对信号进行分析和处理。

2. 课程设计题目描述要求及理论基础

2.1题目要求

(1)语音信号的采集;

要求利用windows下的录音机(开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000KHz,8位,单声道)或其他软件,录制一段自己的话音,时间控制在1秒左右。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用,要求理解采样频率、采样位数等概念。

wavread函数调用格式:

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

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

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

y=wavread(file,[N1,N2]),读取从N1点到N2点的采样值放在向量y中。

(2)语音信号的频谱分析;

要求首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性;从而加深对频谱特性的理解。

(3)数字滤波器的设计;

带通滤波器性能指标fb1=1 200 Hz,fb2=3 000 Hz,fc1=1 000 Hz,fc2=3 200 Hz,As=100 dB,Ap=1 dB。在MATLAB中,可以利用函数fir1设计FIR滤波器

(4)对语音信号进行滤波处理;

(5)对滤波前后的语音信号频谱进行对比分析;

2.2 数字滤波器的简介及发展

数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。

从数字滤波器的单位冲击响应来看,可以分为两大类:有限冲击响应(FIR)数字滤波器和无限冲击响应(IIR)数字滤波器。滤波器按功能上分可以分为低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器(BSF)。

相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用将会越来越广泛。同时DSP处理器的出现和FPGA的迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬件实现提供了更多的选择。

数字滤波器具有以下显著优点:精度高:模拟电路中元件精度很难达到10-3,以上,而数字系统17位字长就可以达到10-5精度。因此在一些精度要求很高的滤波系统中,就必须采用数字滤波器来实现。[1]

灵活性大:数字滤波器的性能主要取决于乘法器的各系数,而这些系数是存放在系数存储器中的,只要改变存储器中存放的系数,就可以得到不同的系统,这些都比改变模拟滤波器系统的特性要容易和方便的多,因而具有很大的灵活性。

可靠性高:因为数字系统只有两个电平信号:“1”和“0”,受噪声及环境条件的影响小,而模拟滤波器各个参数都有一定的温度系数,易受温度、振动、电磁感应等影响。并且数字滤波器多采用大规模集成电路,如用CPLD或FPGA来实现,也可以用专用的DSP处理器来实现,这些大规模集成电路的故障率远比众多分立元件构成的模拟系统的故障率低。

易于大规模集成:因为数字部件具有高度的规范性,便于大规模集成,大规模生产,且数字滤波电路主要工作在截止或饱和状态,对电路参数要求不严格。因此产品的成品率高,价格也日趋降低。相对于模拟滤波器,数字滤波器在体积、重量和性能方面的优势己越来越明显。比如在用一些用模拟网络做的低频滤波器中,网络的电感和电容的数值会大到惊人的程度,甚至不能很好地实现,这时候若采用数字滤波器则方便的多。

并行处理数字滤波器的另外一个最大优点就是可以实现并行处理,比如数字滤波器可采用DSP处理器来实现并行处理。

在很多实际应用中如语音和音频信号处理中,数字滤波器来实现选频功能。因此,指标的形式应为频域中的幅度和相位响应。在通带中,通常希望具有线性相位响应。在FIR滤波器中可以得到精确的线性相位。FIR滤波器传递函数的极点是固定在原点,是不能动的,它只能靠改变零点位置来改变它的性能,所以要达到高的选择性,必须用高的阶数,对于同样的滤波器设计指标,FIR滤波器所要求的阶数可能比IIR滤波器高5-10倍,结果成本高信号延时也较大,如果按线性相位要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样大大增加了滤波器的阶数和复杂性。而FIR滤波器却可以得到严格的线性相位。[2]

从结构上看,FIR滤波器只要采用非递归结构,不论在理论上还是实际的有限精度运算中都不存在稳定性问题,因此造成的频率特性误差也较小。此外FIR滤波器可以采用快速傅立叶变换算法,在相同的阶数条件下运算速度可以快的多。

2.3 FIR数字滤波器的特点

    在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。FIR滤波器不断地对输入样本x(n)延时后,再作乘法累加算法,将滤波结果y(n)输出,因此,FIR实际上是一种乘法累加运算。

    在数字滤波器中,FIR滤波器的最主要的特点是没有反馈回路,故不存在不稳定的问题,同时,可以在幅度特性是随意设置的同时,保证精确的线性相位。稳定和线性相位特性是FIR滤波器的突出优点。另外,它还有以下特点:设计方式是线性的;硬件容易实现;滤波器过渡过程具有有限区间;相对IIR滤波器而言,阶次较高,其延迟也要比同样性能的IIR滤波器大得多。

2.4 FIR滤波器具有的优点

可在幅度特性随意设计的同时,保证精确、严格的线性相位;由于FIR滤波器的单位脉冲h(n)是有限长序列,因此FIR滤波器没有不稳定的问题;由于FIR滤波器一般为非递归结构,因此,在有限运算下不会出现递归型结构中的极限振荡等不稳定现象误差较小;FIR滤波器可以采用FFT算法实现,从而提高了运算效率。

2.5 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)。当x<0时,sign(x)=-1;当x=0时,sign(x)=0;当x>0时,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变换等。

3. 课程设计报告内容

3.1 设计方案的选定与原理

目前FIR滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。本实验中的窗函数法比较简单,可应用现成的窗函数公式,在技术指标要求不高的时候是比较灵活方便的。它是从时域出发,用一个窗函数截取理想的得到h(n),以有限长序列h(n)近似理想的;如果从频域出发,用理想的在单位圆上等角度取样得到H(k),根据h(k)得到H(z)将逼近理想的,这就是频率取样法。[4]

FIR数字滤波器系统的传递函数为:

                                           (1)

                                                                                                            

通过反z变换,数字滤波器的差分方程为:

                   (2)

                                                 

由此得到系统的差分方程:

     (3)

如图所示:

图1 k阶FIR数字滤波器功能框图

通常FIR的计算时间都较长。很多时候我们需要牺牲时间来获得想要得到的滤波器功能。

3.2 用窗函数法设计FIR滤波器

根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1),窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡带宽为Δw,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数wd(n)。

根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n),如果给出待求滤波器频率应为Hd,则理想的单位脉冲响应可以用下面的傅里叶反变换式求出:

               (4)

在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示;从w=0到w=2π采样N点,采用离散傅里叶反变换(IDFT)即可求出。[5]

用窗函数wd(n)将hd(n)截断,并进行加权处理,得到:

                    (5)

如果要求线性相位特性, 则h(n)还必须满足:

                   (6)

根据上式中的正、 负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。 要根据所设计的滤波特性正确选择其中一类。 例如, 要设计线性相位低通特性可选择h(n)=h(N-1-n)一类,而不能选h(n)=-h(N-1-n)一类。

以下是几种常用的窗函数:

(1)  矩形窗:

                     (7)

(2)Hanning窗:

              (8)

(3)Hamming窗:

           (9)

(4)Blackman窗:

     (10)

(5)Kaiser窗:

                 (11)

3.3设计方案程序及图表

对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性

z1=wavread('d:\laoA.wav');

y1=z1(1:8192);

Y1=fft(y1);

n=0:8191;

plot(n,Y1);

图像输出如图:

图2语音信号频谱分析图

一个理想的带通滤波器应该有平稳的通带(bandpass,允许通过的频带),同时限制所有通带外频率的波通过。但是实际上,没有真正意义的理想带通滤波器。真实的滤波器无法完全过滤掉所设计的通带之外的频率的波。事实上,在理想通带边界有一部分频率衰减的区域,不能完全过滤,这一曲线被称做滚降斜率(roll-off)。滚降斜率通常用dB度量来表示频率的衰减程度。一般情况下,滤波器的设计就是把这一衰减区域做的尽可能的窄,以便该滤波器能最大限度接近完美通带的设计。

图3带通滤波器幅频曲线

图4带通滤波器相频曲线

程序设计如下:

clear;close all

[z1,fs,bits]=wavread('d:\laoA.wav')

y1=z1(1:8192);

Y1=fft(y1);

fp1=1200 ;fp2=3000 ;

fc1=1000 ;fc2=3200 ;

As=100 ;Ap=1 ;                                 %数字带通滤波器技术指标

Fs=8000 ;

wp1=2*pi*fp1/Fs;

wc1=2*pi*fc1/Fs;

wp2=2*pi*fp2/Fs;

wc2=2*pi*fc2/Fs;

wdel=wp1-wc1;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

ws =[(wp1+wc1)/2/pi,(wp2+wc2)/2/pi];

wn= kaiser(N+1,beta);

b=fir1(N,ws,wn);

figure(1);     

freqz(b,1)

x=fftfilt(b,z1);

X=fft(x,8192);

figure(2);

subplot(2,2,1);plot(abs(Y1));axis([0,1000,0,1.0]);

title('滤波前信号频谱');

subplot(2,2,2);plot(abs(X));axis([0,2000,0,0.0003]);

title('滤波后信号频谱')

subplot(2,2,3);plot(z1);

title('滤波前信号波形');

subplot(2,2,4);plot(x);

title('滤波前信号波形');

sound(x,fs,bits);

窗函数法:相位响应有严格的线性,不存在稳定性问题, 设计简单。

图形分析如下:

图5 FIR 带通

图6 语音信号频谱

通带范围为(0.30,0.75),最大衰减为0dB,阻带范围为(0.25,0.8),最小衰减为100dB,相位是线性的,基本满足滤波要求。

语音信号经过带通滤波器后,低频分量基本被衰减。

4.总结

数字信号处理课程设计对我们学生的MATLAB的应用,以及数字滤波器的了解考察很细致,不管是软件运用,还是数字信号处理的基本概念、基本原理、分析方法,同时还考察到了编程对其中编程的方法、如何解决实际问题等。这些都让我们从理论联系到实际,真真切切的学到了很多。

通过这次练习是我进一步了解了信号的产生、采样及频谱分析的方法。 以及其中产生信号和绘制信号的基本命令和一些基础编程语言。让我感受到只有在了解课本知识的前提下,才能更好的应用这个工具;并且熟练的应用MATLAB也可以很好的加深我对课程的理解。这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。同时我相信,进一步加强对MATLAB的学习与研究对我今后的学习将会起到很大的帮助。

与其他高级语言的程序设计相比,MATLAB环境下可以更方便、快捷地设计出具有严格线性相位的FIR滤波器,节省大量的编程时间,提高编程效率,且参数的修改也十分方便,还可以进一步进行优化设计。相信随着版本的不断提高,MATLAB在数字滤波器技术中必将发挥更大的作用。同时,用MATLAB计算有关数字滤波器的设计参数,如H(z)、h(n)等,对于数字滤波器的硬件实现也提供了一条简单而准确的途径和依据。

参考书目:

[1] 余成波.《数字信号处理及MATLAB实现》.清华大学出版社版.北京.20##年

[2] 程佩青.《数字信号处理教程》.清华大学出版社出版.北京.20##年

[3] 丁玉美.《数字信号处理》.西安电子科技大学出版社.西安.20##年

[4] A.V.奥本海姆.《数字信号处理》,.科学出版社.北京.20##年

[5] 胡广书.《数字信号处理——理论、算法与实现(第二版)》.电子工业出版社.北京 .20##年

更多相关推荐:
基于MATLAB的数字信号处理的课程设计报告

一课程设计综合实验的目的与要求目的与要求1掌握数字信号处理基础课程的基本理论2掌握应用MATLAB进行数字信号处理的程序设计实验内容已知低通数字滤波器的性能指标如下p026Rp075dBs041As50dB要求...

数字信号处理课程设计报告(样本)

福州大学至诚学院Matlab实践报告专业电子科学与技术班级08级1班姓名黄来奋学号210891205指导老师周老师20xx年5月28日摘要随着计算机和信息科学的飞速发展信号处理逐渐发展成为一门独立的学科成为信息...

数字信号处理课程设计报告

课程设计报告课程名称课题名称专业通信工程班级学号姓名指导教师20xx年12月25日湖南工程学院课程设计任务书课程名称数字信号处理课题数字滤波器设计及滤波专业班级学生姓名学号指导老师审批任务书下达日期20xx年1...

数字信号处理综合设计报告

江南大学物联网工程学院课题数字信号处理综合设计报告设计题目信号处理系统综合设计专业通信工程班级通信0902姓名吴磊学号07020xx225指导教师陈文驰张建平20xx年6月29日一设计概述目的和要求数字信号处理...

数字信号处理课程设计报告

数字信号处理课程设计报告班级电信0803班学号成绩设计一正余弦信号的谱分析一设计目的1用DFT实现对正余弦信号的谱分析2观察DFT长度和窗函数长度对频谱的影响3对DFT进行谱分析中的误差现象获得感性认识二设计原...

数字信号处理课程设计报告

第一章绪论11设计的目的及意义本次课程设计的目的是利用MATLAB对语音信号进行数字信号处理和分析要求学生采集语音信号后在MATLAB软件平台进行频谱分析并对所采集的语音信号加入干扰噪声对加入噪声的信号进行频谱...

数字信号处理课程设计 报告

淮阴工学院数字信号处理课程设计报告课题名称基于MATLAB的语音信号分析和处理低通部分姓名xx学号1234567890班级电子0000专业电子信息工程归口系部电子与电气工程学院起迄日期20xx年12月22日20...

数字信号处理(DSP)课程设计报告

中南大学数字信号处理课程设计报告专业班级通信工程1201指导老师李宏姓名学号完成日期20xx年10月18日前言现代信号处理是将信号表示并处理的理论和技术而数字信号处理与模拟信号处理是信号处理的子集在本次课程设计...

中南大学 数字信号处理课程设计报告

中南大学现代信号处理课程设计报告专业班级指导老师姓名学号目录1课程设计要求2设计过程A总体设计构成及界面1主界面2子界面B具体题目分析及数据测试1设计题目2设计源代码3设计结果4结果分析3设计总结与心得体会4参...

数字信号处理课程设计报告

武汉理工大学数字信号处理课程设计说明书课程设计任务书学生姓名吴丹逸专业班级电信1202班指导教师祝立华王虹工作单位信息工程学院题目用窗函数法设计FIR数字滤波器初始条件1Matlab65以上版本软件2课程设计辅...

数字信号处理课程设计报告(样本)

数字信号处理课程设计报告课题名称系别学号姓名班级指导教师20xx年10月25日目录摘录3正文4一设计内容4二设计原理4三设计过程71语音信号的录制72取点频谱分析83低通滤波器设计104滤滤前后信号对比12结论...

数字信号处理课程设计

课程设计课程设计名称数字信号处理课程设计专业班级学生姓名学号指导教师课程设计时间20xx616至20xx620说明本表由指导教师填写由教研室主任审核后下达给选题学生装订在设计论文首页一需求分析滤波器从广义上来说...

数字信号处理课程设计报告(22篇)