数字信号处理实验2
- 格式:doc
- 大小:111.00 KB
- 文档页数:15
数字信号处理实验报告设计数字低通IIR和FIR滤波器对语音信号进行滤波处理班级:物联网1104班学号:**********姓名:***指导老师:***一、实验内容1.选择一个.wav格式的语音信号作为分析的对象,对其进行频谱分析。
2.设计FIR和IIR数字滤波器,并对带噪语音信号进行滤波,分析滤波后信号的时域和频域特征。
二、实验目的1.学会使用Matlab来分析音频信号的时域和频域特性。
2.熟悉用双线性变换法设计IIR和FIR数字滤波器的原理与方法。
3.学会设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
4.掌握IIR\FIR数字滤波器的MATLAB实现方法。
5.通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。
三、实验原理1.IIR滤波器:利用双线性变换设计IIR滤波器(只介绍巴特沃斯数字低通滤波器的设计),首先要设计出满足指标要求的模拟滤波器的传递函数,然后由通过双线性变换可得所要设计的IIR滤波器的系统函数。
如果给定的指标为数字滤波器的指标,则首先要转换成模拟滤波器的技术指标,这里主要是边界频率的转换,对指标不作变化。
边界频率的转换关系为。
接着,按照模拟低通滤波器的技术指标根据相应设计公式求出滤波器的阶数和截止频率;根据阶数查巴特沃斯归一化低通滤波器参数表,得到归一化传输函数;最后,将代入去归一,得到实际的模拟滤波器传输函数。
之后,通过双线性变换法转换公式,得到所要设计的IIR滤波器的系统函数。
2.FIR滤波器:如果所希望的滤波器的理想频率响应函数为(e )j d H ω,则其对应的单位脉冲响应为⎰-=πππdwe e Hn h jwn jw dd )(21)(窗函数设计法的基本原理是用有限长单位脉冲响应(n)h 逼近(n)d h 。
由于(n)d h 往往是无限长序列,且是非因果的,所以用窗函数(n)w 将(n)d h 截断,并进行加权处理,得到:)()()(n w n h n h d ⋅=(n)h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数(e )j d H ω为∑-=-=10)()(N n jwnjwe n h e H式中,N为所选窗函数(n)w 的长度。
实验2 信号卷积实验一、实验目的1. 理解卷积的概念及物理意义;2. 通过实验方法加深对卷积运算的图解方法及结果的理解。
二、卷积的概念及物理意义1、信号卷积实验的意义:是要验证和求解系统的零状态响应,也即是,不考虑系统初始储能状态的作用,由外部激励信号所产生的响应的实验。
2、卷积积分分析的基本原理:利用信号的分解原理,将连续信号分解为冲激信号组合,然后将这些冲激信号分别通过线性系统,将得到各个冲激信号对应的冲激响应,再将各冲激响应叠加就得到零状态响应。
这就是卷积积分分析的基本原理。
3、卷积积分的运算方法:就是将图形进行:反褶、位移、相乘、积分,这些基本步骤组合而成的。
4、卷积积分的图解方法与运算规律:见:《信号与系统》一书;段哲民,第三版,46、47页三、实验原理说明卷积积分的物理意义是将信号分解为冲激信号之和,借助系统的冲激响应,求解系统对任意激励信号的零状态响应。
设系统的激励信号为)t (x ,冲激响应为)t (h ,则系统的零状态响应为)(*)()(t h t x t y =⎰∞∞--=ττd t h t x )()(。
对于任意两个信号)t (f 1和)t (f 2,两者做卷积运算定义为⎰∞∞--=ττd t f t f t f )(2)(1)(=)t (f 1*)t (f 2=)t (f 2*)t (f 1。
1. 两个矩形脉冲信号的卷积过程图2-1 两矩形脉冲的卷积积分的运算过程与结果 两信号)t (x 与)t (h 都为矩形脉冲信号,如图2-1所示。
下面由图解的方法(图2-1)给出两个信号的卷积过程和结果,以便与实验结果进行比较。
2. 矩形脉冲信号与锯齿波信号的卷积信号)t (f 1为矩形脉冲信号,)t (f 2为锯齿波信号,如图2-2所示。
根据卷积积分的运算方法得到)t (f 1和)t (f 2的卷积积分结果)t (f ,如图2-2(c)所示。
)0≤<∞-t210≤≤t 1≤≤t 41≤≤t ∞<≤t 2124τ(b)(a)(c)(d)(e)(f)(g)(h)(i)2卷积结果图2-2 矩形脉冲信号与锯齿脉冲信号的卷积积分的结果3. 本实验进行的卷积运算的实现方法在本实验装置中采用了DSP 数字信号处理芯片,因此在处理模拟信号的卷积积分运算时,是先通过A/D 转换器把模拟信号转换为数字信号,利用所编写的相应程序控制DSP 芯片实现数字信号的卷积运算,再把运算结果通过D/A 转换为模拟信号输出。
实验二语音信号分析与处理学号姓名注:1)此次实验作为《数字信号处理》课程实验成绩的重要依据,请同学们认真、独立完成,不得抄袭。
2)请在授课教师规定的时间内完成;3)完成作业后,请以word格式保存,文件名为:学号+姓名4)请通读全文,依据第2及第3 两部分内容,认真填写第4部分所需的实验数据,并给出程序内容。
1. 实验目的(1) 学会MATLAB的使用,掌握MATLAB的程序设计方法(2) 掌握在windows环境下语音信号采集的方法(3) 掌握MATLAB设计FIR和IIR滤波器的方法及应用(4) 学会用MATLAB对语音信号的分析与处理方法2. 实验内容录制一段自己的语音信号,对录制的语音信号进行采样,画出采样后语音信号的时域波形和频谱图,确定语音信号的频带范围;使用MATLAB产生白噪声信号模拟语音信号在处理过程中的加性噪声并与语音信号进行叠加,画出受污染语音信号的时域波形和频谱图;采用双线性法设计出IIR滤波器和窗函数法设计出FIR滤波器,画出滤波器的频响特性图;用自己设计的这两种滤波器分别对受污染的语音信号进行滤波,画出滤波后语音信号的时域波形和频谱图;对滤波前后的语音信号进行时域波形和频谱图的对比,分析信号的变化;回放语音信号,感觉与原始语音的不同。
3. 实验步骤1)语音信号的采集与回放利用windous下的录音机或其他软件录制一段自己的语音(规定:语音内容为自己的名字,以wav格式保存,如wql.wav),时间控制再2秒之内,利用MATLAB提供的函数wavread 对语音信号进行采样,提供sound函数对语音信号进行回放。
[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率nbits表示采样位数。
Wavread的更多用法请使用help命令自行查询。
2)语音信号的频谱分析利用fft函数对信号进行频谱分析3)受白噪声干扰的语音信号的产生与频谱分析4)据语音信号的频带情况,设计FIR和IIR两种滤波器5)用滤波器对受污染语音信号进行滤波FIR滤波器fftfilt函数对信号进行滤波,IIR滤波器用filter函数对信号进行滤波6)比较滤波前后信号的波形与频谱7)回放滤波后的语音信号4. 实验数据及实验程序实验数据1)原始语音信号的时域波形和频谱图00.51 1.52 2.53 3.54 4.5x 104-0.2-0.15-0.1-0.0500.050.10.150.20.25声音波形图00.51 1.52 2.53 3.54 4.5x 104100200300400500600声音频谱图2)带限白噪声信号的时域波形和幅频特性00.51 1.52-1-0.500.511.5窄带噪声波形图00.51 1.52-1-0.50.511.5窄带噪声频谱图3)受污染语音信号的时域波形和频谱图0246x 104-0.2-0.15-0.1-0.0500.050.10.150.20.25混合信号波形图0246x 1040100200300400500600混合信号频谱图4)滤波器的频响特性图 FIR 滤波器的频响特性图00.10.20.30.40.50.60.70.80.91-8000-6000-4000-2000Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )0.10.20.30.40.50.60.70.80.91-300-200-1000100Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )246x 104-0.3-0.2-0.100.10.20.30.40.50.60.70246x 1040.20.40.60.811.21.4IIR 滤波器的频响特性图0100200300400500600-300-250-200-150-100-5050低通滤波器幅度谱图5)滤波后语音信号的时域波形和频谱图00.51 1.52 2.53 3.54 4.5x 1041002003004005006000246x 104-0.1-0.050.050.10.15恢复信号波形图0246x 104100200300400500600恢复信号频谱图6)滤波前后的语音信号时域波形对比图和频谱对比图0246x 104-0.2-0.15-0.1-0.0500.050.10.150.20.25信号波形图0246x 104-0.1-0.0500.050.10.15恢复信号波形图0246x 104100200300400500600信号频谱图0246x 104100200300400500600恢复信号频谱图实验程序: 1)实验主程序 clc;clear;close%[x,fs,bits]=wavread('录音的名字'); [x,fs,bits]=wavread('录音的名字.wav'); %x=wavread('录音的名字'); sound(x,fs,bits);plot(x);title('声音波形图') figure(2)%y=fft(x,4096); y=fft(x);plot(abs(y));title('声音频谱图')fh=0.9;fl=0.25;n=1;length(x);y1=fh*sinc(fh*(n-5000))-fl*sinc(fl*(n-5000)); figure(5)subplot(1,2,1);plot(y1);title('窄带噪声波形图') y2=fft(y1);subplot(1,2,2);plot(abs(y2));title('窄带噪声频谱图') y3=y1+x; figure(6)subplot(1,2,1);plot(y1+x);title('混合信号波形图') y4=fft(y3);subplot(1,2,2);plot(abs(y4));title('混合信号频谱图')wp=0.5;ws=0.55; detaw=ws-wp; n=ceil(8*pi/detaw); wc=(wp+ws)/2;b1=fir1(n-1,wc/pi,hanning(n));freqz(b1,1,41856)f1=fftfilt(b1,y3);plot(f1)f2=fft(f1);plot(abs(f2))f11=filter (bz,az, y3);figure(8)subplot(1,2,1);plot(f11);title('恢复信号波形图')f22=fft(f11);subplot(1,2,2);plot(abs(f22));title('恢复信号频谱图') sound(f11,fs,bits);figure(9)subplot(1,2,1);plot(x);title('信号波形图')subplot(1,2,2);plot(f11);title('恢复信号波形图') figure(10)subplot(1,2,1);plot(abs(y));title('信号频谱图') subplot(1,2,2);plot(abs(f22));title('恢复信号频谱图') 2)FIR滤波器子程序fh=0.9;f1=0.25;n=1:length(x);h=fh*sinc(fh*(n-5000))-f1*sinc(f1*(n-5000));figure(4)subplot(1,2,1);plot(h);p=fft(h);subplot(1,2,2);plot(abs(p));3)IIR滤波器子程序fs=44100;rp=3;rs=20;wp1=0.5;wss1=0.55;op1=2*fs*tan(wp1/2);os1=2*fs*tan(wss1/2);[N,wc]=buttord(op1,os1,rp,rs,'s')[z,p,k]=buttap(N);[ba,aa]=zp2tf(z,p,k);[b,a]=lp2lp(ba,aa,wc);[bz,az]=bilinear(b,a,fs);H=freqz(bz,az);ma=20*log10(abs(H));figure(7)plot(ma);title('低通滤波器幅度谱图')。
实验二基于MATLAB数字滤波器的设计1.示例基于MATLAB的语音信号分析与处理1.1实验目的综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
1.2 实验基本要求●掌握数字信号处理的基本概念、基本理论和基本方法●掌握MATLAB设计FIR和IIR数字滤波器的方法●学会用MATLAB对信号进行分析与处理●学会MATLAB的使用,掌握MATLAB的程序设计方法●掌握在Windows环境下语音信号采集的方法1.3 实验内容和要求录制一段自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时候波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号。
1.4 实验实现步骤(1)语音信号的采集利用Windows下的录音机或其他软件,录制一段自己的话音,时间控制在1s左右;然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
通过使用wavread 函数,理解采样频率,采样位数等概念。
wavread 函数调用格式如下。
y=wavread(file),读取file 所规定的wav 文件,返回采样值放在向量y 中。
[y,fs,nbits]=wavread(file),采样值放在向量y 中,fs 表示采样频率(Hz ),n bits 表示采样位数y=wavread(file ,N)读取前N 点的采样值放在向量y 中。
y=wavread(file ,[N 1,N 2]),读取从N 1点到 N 2点的采样值放在向量y 中 (2)语音信号的频谱分析要求首先画出语音信号的时域波形,然后对语音信号进行频域分析,在MATLAB 中可以利用函数fft 对信号进行快速的傅立叶变换,从而得到信号的频谱特性,从而加深对频谱特性的理解。
范文范例 指导参考 学习资料整理 实验二 离散时间系统的时域分析
实验室名称:计算机基础实验室(信息学院2202) 实验时间: 2015 年 9 月 24 日
姓 名: 王凤琼 学号:20131060114 专业: 电子信息工程 指导教师:柏正尧
成绩 教师签名: 年 月 日 范文范例 指导参考
学习资料整理 一、实验目的 1. 通过MATLAB仿真一些简单的离散时间系统,并研究它们的时域特性。 2. 了解滑动平均系统的特性,仿真滑动平均系统,与理论课相结合,分析系统特性。 3. 运用MATLAB程序得出线性时不变离散时间系统的冲激响应。 4. 熟悉相应的MATLAB命令,如filter,impz。 5. 实验与理论相结合,能达到对理论的更好理解。
二、实验内容 1.滑动平均系统的仿真; 2.线性和非线性系统的仿真; 3.线性时不变离散时间系统的仿真; Q2.1对 M=2,运行上述程序,生成输入 x[n]=s1[n]+s2[n]的输出信 号。输入 x[n]的哪个分量被该离散时间系统抑制? Q2.2若 线 性 时 不 变 系 统 由 y[n]=0.5(x[n]+x[n-1]) 变 成 y[n]=0.5(x[n]-x[n-1]),对输入 x[n]= s1[n]+s2[n]有什么影响? Q2.4修改程序P2.1,用一个长度为101,最低频率为0,最高频率为0.5的扫频正弦信号作为输入信号,计算其输出信号。 Q2.7运行程序P2.3,对由加权输入得到的y[n]与在相同权系数下输出y1[n]和 y2[n]相加得到的yt[n]进行比较,这两个序列是否相等?该系统是线性系统吗?
Q2.12采用三个不同的延时变量D的值运行程序P2.4并比较输出序列y[n]和yd[n-
10]。这两个序列之间有什么关系?该系统是时不变系统吗? Q2.19运行程序 P2.5,生成2.15所给离散时间系统的冲激响应。 y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2]
Q2.20修改程序 P2.5,产生如下因果线性时不变系统的冲激响应的前 45 个样本: y[n]+0.71y[n-1]-0.46y[n-2]-0.62y[n-3]=0.9x[n]-0.45x[n-1]+0.35x[n2]+0.002x[n-3]
Q2.23运行程序p2.6,计算输出序列y[n]和y2[n]以及 差值信号d[n],y[n]和y2[n]相等
Q2.28运行程序p2.7,对序列h[n]和y[n]求卷积,生成y[n],并用FIR 滤波器h[n]对输入x[n]滤波,求得y1[n]。y[n]和y1[n]有差别吗?为什么要使用 范文范例 指导参考 学习资料整理 对x[n]补零后得到的x1[n]作为输入来产生y1[n]? 计算线性时不变离散时间系统的冲激响应,运用MATLAB命令y=impz(num,den,N),得出冲激响应的前N个样本。
三、实验器材及软件 1. 微型计算机1台 2. MATLAB 7.0软件 四、实验原理 1.若y1[n]和y2[n]分别是因果离散时间系统输入信号u1[n]和u2[n]的响应,则当 u1[n]=u2[n] n2.对于离散时不变系统,若y1[n]是x1[n]的响应,则输入x[n]=x1[n=n0]的输出响应为y[n]=y1[n-n0]。 3.描述因果线性时不变离散时间系统,可用命令 filter进行仿真。 计算冲激响应可用函数impz表示计算冲击响应钱N个样本可用y=impz(num,den,N)来表示。
五、实验步骤 按照课本上的例题书写程序。 范文范例 指导参考
学习资料整理 六 实验记录(数据、图表、波形、程序等) Q2.1 clf; n=0:100; s1=cos(2*pi*0.05*n); s2=cos(2*pi*0.47*n); x=s1+s2; M=input('滤波器所需的长度='); num=ones(1,M); y=filter(num,1,x)/M; subplot(2,2,1); plot(n,s1); axis([0,100,-2,2]); xlabel('时间序号n');ylabel('振幅'); title('信号#1'); subplot(2,2,2); plot(n,s2); axis([0,100,-2,2]); xlabel('时间序号n');ylabel('振幅'); title('信号#2'); subplot(2,2,3); plot(n,x); axis([0,100,-2,2]); xlabel('时间序号n');ylabel('振幅'); title('输入信号'); subplot(2,2,4); plot(n,y); axis([0,100,-2,2]); xlabel('时间序号n');ylabel('振幅'); title('输出信号'); axis; 范文范例 指导参考
学习资料整理 050100-2-1012时间序号n振幅信号#1050100-2-1012
时间序号n振幅
信号#2
050100-2-1012时间序号n振幅输入信号050100-2-1012时间序号n振幅
输出信号
Q2.2 clf; n=0:100; s1=cos(2*pi*0.05*n); s2=cos(2*pi*0.47*n); x=s1+s2; M=input('滤波器所需的长度='); num=[1,-ones(1,M-1)]; y=filter(num,1,x)/M; subplot(2,2,1); plot(n,s1); axis([0,100,-2,2]); xlabel('时间序号n');ylabel('振幅'); title('信号#1'); subplot(2,2,2); plot(n,s2); axis([0,100,-2,2]); xlabel('时间序号n');ylabel('振幅'); title('信号#2'); subplot(2,2,3); plot(n,x); axis([0,100,-2,2]); xlabel('时间序号n');ylabel('振幅'); title('输入信号'); subplot(2,2,4); 范文范例 指导参考 学习资料整理 plot(n,y); axis([0,100,-2,2]); xlabel('时间序号n');ylabel('振幅'); title('输出信号'); axis;
050100-2-1012时间序号n振幅信号#1050100-2-1012
时间序号n振幅
信号#2
050100-2-1012时间序号n振幅输入信号050100-2-1012时间序号n振幅
输出信号
Q2.4 clf; n=0:100; a=pi/2/100; b=0;arg=a*n.*n+b*n;x=cos(arg); M=input('滤波器所需的长度='); num=ones(1,M); y=filter(num,1,x)/M; subplot(2,1,1); stem(n,x); axis([0,100,-2,2]); xlabel('时间序号n'); ylabel('振幅'); title('输入信号'); subplot(2,1,2); plot(n,y); axis([0,100,-2,2]); xlabel('时间序号n'); ylabel('振幅'); 范文范例 指导参考 学习资料整理 title('输出信号'); axis;
Q2.7 clf; n=0:40; a=2;b=-3 x1=cos(2*pi*0.1*n); x2=cos(2*pi*0.4*n); x=a*x1+b*x2; num=[2.2403 2.4908 2.2403]; den=[1 -0.4 0.75]; ic=[0 0]; y1=filter(num,den,x1,ic); y2=filter(num,den,x2,ic); y=filter(num,den,x,ic); yt=a*y1+b*y2; d=y-yt; subplot(3,1,1) stem(n,y); ylabel('振幅'); title('加权输入:a \cdotx_{1}[n]+b \cdotx_{2}[n]的输出'); subplot(3,1,2) ylabel('振幅'); title('加权输出:a \cdotx_{1}[n]+b \cdotx_{2}[n]');