[信息与通信]基于matlab的数字信号精品实验报告.doc
《[信息与通信]基于matlab的数字信号精品实验报告.doc》由会员分享,可在线阅读,更多相关《[信息与通信]基于matlab的数字信号精品实验报告.doc(37页珍藏版)》请在三一文库上搜索。
1、语音信号处理与分析语音信号处理与分析专 业: 通信工程 班 级: 081班 姓 名: 祝健博 学 号: 2008026130 指导教师: 许 爽 一、实验类型 综合研究性实验二、实验目的1掌握采样定理及FFT谱分析的基本原理及其利用Matlab的实现方法;2. 掌握数字滤波器的设计原理和方法;3. 学习用MATLAB编程实现语音数字滤波系统。三、实验要求1. 利用Windows下的录音机设备采集语音信号;2. 对语音信号进行采样并混进加性噪声,作频谱分析;3. 通过频谱分析选择合适的滤波器性能指标,设计合适的数字滤波器,并对含噪音的语音信号进行数字滤波;4. 设计处理系统的用户界面(GUI),
2、在所设计的系统界面上可以选择滤波器的参数,显示滤波器的频率响应,选择信号等。四、数字滤波器的设计原理数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配,所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。其设计方法主要有经典设计法、直接设计法和最大平滑滤波器设计法。FIR数字滤波器的
3、单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。在对滤波器实际设计时,整个过程的运算量是很大的。设计阶数较高的IIR滤波器时,计算量更大,设计过程中改变参数或滤波器类型时都要重新计算。设计完成后对已设计的滤波器的频率响应要进行校核。要得到幅频、相频响应特性,运算量也是很大的。平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。在这种情况下,滤波器设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成。
4、利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。五、傅里叶变换计算离散傅里叶变换的一种快速算法,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提guarantee出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。设X(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实
5、数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N2次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2(N/2)2=N+N2/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组
6、的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。六、信号处理原理、分析和实现6.1 语音信号的采集利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“luyin”保存入D : MATLAB work 中。可以看到,文件存储器的后缀默认为. wav ,这是WIN
7、DOWS 操作系统规定的声音文件存的标准。6.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,N
8、2)功能说明:读取从N1到N2点的采样值放在向量y中。接下来,对语音信号OriSound.wav进行采样。其程序如下:%=方法1:用Matlab直接读取已经录好的音频文件=y,fs,nbits=wavread(luyin1.wav); %把语音信号进行加载入Matlab仿真软件平台中 wavplay(y,fs);% 回放语音信号 N=length(y);%求语音信号的长度 Y=fft(y,N); %傅里叶变换 subplot(2,2,1); plot(y); title(原始信号波形); subplot(2,2,2); plot(abs(Y); title(原始信号频谱);%=方法2:可以用M
9、atlab直接用函数进行录制,然后再进行分析=fs=8000;channel=1;t=5;fprintf(按任意键后开始 %d 秒录音:,t); pause;%文字提示 %暂停命令fprintf(录音中.);%文字提示y=wavrecord(t*fs, fs,channel,double);%录制语音信号fprintf(录音结束n);%文字提示wavwrite(y,fs,d:matlabworklupin1.wav);%存储录音信号fprintf(按任意键后回放:);pause;wavplay(y,fs); N=length(y);%求语音信号的长度 Y=fft(y,N); %傅里叶变换 su
10、bplot(2,2,1); plot(y); title(原始信号波形); subplot(2,2,2); plot(abs(Y); title(原始信号频谱);程序结果如下图: 图1 原始信号波形及频谱6.3 语音信号加噪与频谱分析MATLAB中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数 。我们可以直接应用两个函数:一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。在本次课程设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对
11、其频谱分析。Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生nn服从标准高斯分布的随机数矩阵,后者产生mn的随机数矩阵。在这里,我们选用Randn(m,n)函数。语音信号添加噪声及其频谱分析的主要程序如下:%=加白噪声=y,fs,nbits=wavread (luyin1);N = length (y) ; %求出语音信号的长度Noise=0.01*randn(n,2); %随机函数产生噪声Si=y+Noise; %语音信号加入噪声 sound(Si);subplot(2,1,1);plot(Si);title(加噪语音信号的时域波形);S=fft(Si);
12、%傅里叶变换subplot(2,1,2);plot(abs(S); title(加噪语音信号的频域波形);程序结果如下图:图2 加噪后的波形及频谱分析6.4 设计FIR和IIR数字滤波器IIR滤波器和FIR滤波器的设计方法完全不同。IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。 对于数字高通、带通滤波器的设计,通用方法为双
13、线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下:(1)确定所需类型数字滤波器的技术指标。(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为=2/T tan(0.5)(3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。(4)设计模拟低通滤波器。(5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。(6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。我们知道,脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟
14、滤波器的频响特性。为了克服之一缺点,可以采用双线性变换法。下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步骤:(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。(3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。如前所述,IIR滤波器和FIR滤波器的设计方法有很大的区别。下面我们着重介绍用窗函数法设计FIR滤波器的步骤。如下:(1)根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、
15、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。(2)构造希望逼近的频率响应函数。(3)计算h(n).。(4)加窗得到设计结果。接下来,我们根据语音信号的特点给出有关滤波器的技术指标:低通滤波器的性能指标:通带边界频率fp=1000Hz,阻带截止频率fc=1200Hz,阻带最小衰减As=100db , 通带最大衰减Ap=1dB高通滤波器的性能指标:通带边界频率fp=3500Hz,阻带截止频率fc=4000Hz,阻带最小衰减As=100dB,通带最大衰减Ap=1dB;带通滤波器的性能指标:通带边界频率fp1=
16、1200Hz,fp2=3000hZ,阻带截止频率fc1=1000Hz,fc2=3200Hz,阻带最小衰减As=100dB,通带最大衰减Ap=1dB在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1和ellip设计IIR滤波器,利用Matlab中的函数freqz画出各步步器的频率响应。hn=fir1(M,wc,window),可以指定窗函数向量window。如果缺省window参数,则fir1默认为哈明窗。其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman窗,其相应的都有实现函数。MATLAB信号处理工具箱
17、函数buttp buttor butter是巴特沃斯滤波器设计函数,其有5种调用格式,本课程设计中用到的是N,wc=butter(N,wc,Rp,As,s),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下:B,A=cheby1(N,Rp,wpo,ftypr)B,A=cheby1(N,Rp,wpo,ftypr,s) 函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相
18、应的实现函数即可。下面我们将给出FIR和IIR数字滤波器的主要程序。%=IIR低通滤波器=Ft=8000;Fp=1000; %通带边界频率Fs=1200; %阻带截止频率wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/2);n11,wn11=buttord(wp,ws,1,50,s); %求低通滤波器的阶数和截止频率b11,a11=butter(n11,wn11,s); %求S域的频率响应的参数 num11,den11=bilinear(b11,a11,0.5);%双线性变换实现S域到Z域的变换 h,w=freqz(nu
19、m11,den11); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);title(IIR低通滤波器);legend(用巴特沃斯butter设计);图3 IIR低通滤波器%=IIR带通滤波器=Fp1=1200;Fp2=3000;Fs1=1000;Fs2=3200;Ft=8000;wp1=tan(pi*Fp1/Ft); %带通到低通滤波器的转换wp2=tan(pi*Fp2/Ft);ws1=tan(pi*Fs1/Ft);ws2=tan(pi*Fs2/Ft);w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp1*wp2-w.2)/(bw*w);n12,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息与通信 信息 通信 基于 matlab 数字信号 精品 实验 报告
链接地址:https://www.31doc.com/p-1971608.html