数字信号处理实验二信号的分析与处理综合实验38152111 张艾一、实验目的综合运用数字信号处理的理论知识进行信号的采样,重构,频谱分析和滤波器的设计,通过理论推导得出相应结论,再利用Matlab作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
二、基本要求1.掌握数字信号处理的基本概念、基本理论和基本方法;2.学会MATLAB的使用,掌握MATLAB的程序设计方法;3.掌握用MATLAB设计简单实验验证采样定理的方法;4.掌握在Windows环境下语音信号采集的方法;5.学会用MATLAB对信号进行频谱分析;6.掌握MATLAB设计FIR和IIR数字滤波器的方法;三、实验内容1.利用简单正弦信号设计实验验证采样定理:(1)Matlab产生离散信号的方法,作图的方法,以及基本运算操作(2)对连续正弦信号以不同的采样频率作采样(3)对采样前后信号进行傅立叶变换,并画频谱图(4)分析采样前后频谱的有变化,验证采样定理。
掌握画频谱图的方法,深刻理解采样频率,信号频率,采样点数,频率分辨率等概念2.真实语音信号的采样重构:录制一段自己的语音信号,并对录制的信号进行采样;画出采样前后语音信号的时域波形和频谱图;对降采样后的信号进行插值重构,滤波,恢复原信号。
(1)语音信号的采集(2)降采样的实现(改变了信号的采样率)(3)以不同采样率采样后,语音信号的频谱分析(4)采样前后声音的变化(5)对降采样后的信号进行插值重构,滤波,恢复原信号3.带噪声语音信号的频谱分析(1)设计一频率已知的噪声信号,与实验2中原始语音信号相加,构造带噪声信号(2)画出原始语音信号和加噪声后信号,以及它们的频谱图(3)利用频谱图分析噪声信号和原语音信号的不同特性4.对带噪声语音信号滤波去噪:给定滤波器性能指标,采样窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采样的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;(1)分析带噪声信号频谱,找出噪声所在的频率段(2)利用matlab中已有的滤波器滤波(3)根据语音信号特点,自己设计滤波器滤波(4)比较各种滤波器性能(至少四种),选择一种合适的滤波器将噪声信号滤除(5)回放语音信号,比较滤波前后声音的变化四、主要实验仪器及材料微型计算机、Matlab。
五、实验步骤及结果分析1、设计一简单正弦信号,通过改变采样率观察采样前后的信号变化。
选取正弦信号sin(2100.3)π⨯⨯+,t原始信号:0.01s的采样间隔(采样频率为100Hz)表示。
分别以5Hz,10Hz,20Hz,40Hz,80Hz,200Hz对原始信号进行采样,画出采样前后的信号,并画出其频谱图,对比前后的变化,验证采样定理。
结果图如下fs=5Hz fs=10Hzfs=20Hz fs=40HzFs=80Hz fs=200Hz对比不同采用那个频率下信号的变化可验证:只有在fs(采样频率)≥2f(信号频率)时,信号才能保持原有时域、频域特性,不失真。
2、对真实语音信号的采样、重构⑴读取样本声音文件“hello.wav”,并对其进行1/2倍,1/4倍,1/20倍,1/50倍,1/100倍的降采样,画出降采样前后信号的波形和频谱;⑵对采样后的语音信号进行插值重构,滤波,恢复原始信号。
画出插值前后信号的波形以及频谱图。
结果图如下:原始信号1/2采样1/4采样1/20 采样1/50 采样1/100 采样将重构后的信号与原信号进行比较,采样率为1/2 和1/4 时信号还能基本保持原样,采样率为1/20 时已经丢失了一部分细节,但大体上还保持原信息,而采样率提高到1/50 和1/100时,基本上看不出信号原样。
随着采样率的提高,重构后的信号听起来也是越来越模糊,1/20 时就听不清楚了。
3、对原始语音信号加噪声对原始信号“hello.wav”加上幅值为0.01,频率为5000的正弦波噪声信号,时域图及频域图如下:4、设计数字滤波器*用窗函数法设计FIR高通,低通,带通,带阻滤波器(fs=22050)1)低通滤波器:fp=4500Hz(0.41),fc=6500(0.59)Hz,Rs=30dB,Rp=1dB。
(fp:通带截至频率;fc:阻带截至频率;Rs:通带波纹;Rp:阻带波纹)由题意,阻带衰减不小于30dB,根据FIR滤波器各种窗函数的基本参数,选择Hanning窗。
在窗函数设计法中,要求设计的频率归一化到0~π之间,Nyquist频率对应于π,因此通带和阻带边界频率为0.41π和0.59π。
低通滤波器的幅频和相频特性如下:2)高通滤波器:fc=4500Hz(0.41),fp=6500Hz(0.59),Rs=30dB,Rp=1dB。
(fp:通带截至频率;fc:阻带截至频率;Rs:通带波纹;Rp:阻带波纹)选择Hanning窗。
通带和阻带边界频率为0.59π和0.41π。
高通滤波器的幅频和相频特性如下:3)带阻滤波器:fp1=4800Hz(0.44),fp2=5200Hz(0.47),fc1=4600 Hz(0.42),fc2=5400 Hz(0.49),Rs=30dB,Rp=1dB。
([fp1 fp2]:阻带截至频率;[fc1 fc2]:通带截至频率)选择Hanning窗。
通带边界频率为0.42π和0.49π,阻带边界频率为0.44π和0.47π。
带阻滤波器的幅频和相频特性如下:4)带通滤波器:fc1=4800 Hz(0.44),fc2=5200 Hz(0.47),fp1=4600 Hz(0.42),fp2=5400 Hz(0.49),Rs=30dB,Rp=1dB。
([fp1 fp2]:阻带截至频率;[fc1 fc2]:通带截至频率)选择Hanning窗,阻带边界频率为0.42π、0.49π,通带边界频率为0.44π、0.47π。
带通滤波器的幅频和相频特性如下:*用完全设计函数设计IIR滤波器(fs=22050)1)低通滤波器性能指标,fp=4500Hz(0.41),fc=6500Hz(0.59),Rs=100,Rp=1。
(fp:通带截至频率;fc:阻带截至频率;Rs:通带波纹;Rp:阻带波纹)低通滤波器的幅频和相频特性如下:2)高通滤波器性能指标,fc=4500Hz(0.41),fp=6500Hz(0.59),Rs=100,Rp=1。
(fp:通带截至频率;fc:阻带截至频率;Rs:通带波纹;Rp:阻带波纹)高通滤波器的幅频和相频特性如下:3)带通滤波器性能指标,fc1=4800Hz(0.44),fc2=5200Hz(0.47),fp1=4600Hz(0.42),fp2=5400Hz(0.49),Rs=30dB,Rp=1dB。
([fp1 fp2]:阻带截至频率;[fc1 fc2]:通带截至频率)带通滤波器的幅频和相频特性如下:4)带阻滤波器性能指标,fp1=4800Hz(0.44),fp2=5200Hz(0.47),fc1=4600Hz(0.42),fc2=5400Hz(0.49),Rs=30dB,Rp=1dB。
([fp1 fp2]:阻带截至频率;[fc1 fc2]:通带截至频率)带通滤波器的幅频和相频特性如下:5、用滤波器对信号进行滤波*用FIR低通滤波器:fp=4000Hz(0.36),fc=4500(0.41)Hz,Rs=30dB,Rp=1 dB对“hello.wav”加噪声信号进行滤波。
结果图如下:* 用IIR低通滤波器:fp=4000Hz(0.36),fc=4500(0.41)Hz,Rs=30dB,Rp=1 dB对“hello.wav”加噪声信号进行滤波。
结果图如下:六、思考题1、IIR与FIR 设计方法的各自特点是什么?IIR的特点:先按指标设计模拟滤波器,再转换为数字滤波器;FIR的特点:直接按指标设计数字滤波器。
2、IIR与FIR各自优缺点是什么?IIR:优点:相同的性能下阶次低;零极点可同时起作用;缺点:相位是非线性的;不一定稳定;运算误差比较大,对频率分量的选择性不好。
FIR:优点:相位一定是线性的;系统一定是稳定的;运算误差比较小;对频率分量的选择性好。
缺点:阶次高。
3、为什么有这么多的设计方法?为了满足各种方面的需要。
当滤波器类型简单,参数固定时宜采用窗函数或者脉冲响应不变法,已达到最为精确的滤波效果;当滤波器类型较复杂,有多个通带阻带时用窗函数法很繁琐,宜采用最优化设计方法进行快速设计;而且还要根据滤波器的不同类型选择方法,比如椭圆滤波器就和使用双线性变换法设计。
4、有没有一种滤波器在所有情况下都是最佳的?没有。
任何一种滤波器都有性能上的优缺点,满足了一方面的需求,就难以满足另一方面的需求,比如说阶次和线性相位的矛盾就是这样。
我们在设计的时候应该根据具体情况的要求,优先满足可以达到较好总体效果的标准。
七、收获和总结这是数字信号处理的第二次实验课,主要进行了语音信号的采样、滤波、插值、重构练习,学习并实践了IIR、FIR数字滤波器的设计。
语音信号的处理相对简单,在练习过程中,我在滤波器设计上花了比较多的时间。
对FIR滤波器的原理和设计过程本来是比较清楚的,但在编程时出现了很多细小的错误,如:变量定义不正确,标点符号中英文的错误等等。
应该在以后的编程中养成一种良好的习惯,争取一次正确,不要寄希望于在执行出错后再回头检查。
IIR的设计用完全设计函数设计中没有出现问题,但是在脉冲响应法中设计的低通和带通滤波器都没有问题,高通和带阻明显不正确,图如下:源代码:clear all;fs=22050;wp1=0.41*pi;ws1=0.59*pi;rp1=1,rs1=100;%数字滤波器截止频率、通带波纹和阻带衰减T=1/fs;Nn=128;%采样间隔Wp1=wp1/T;Ws1=ws1/T;%得到模拟滤波器的频率—采用脉冲响应不变法的频率转换形式[N1,Wn1]=cheb1ord(Wp1,Ws1,rp1,rs1,'s');%计算模拟滤波器的最小阶数[z1,p1,k1]=cheb1ap(N1,rp1);%设计低通原型数字滤波器[Bap1,Aap1]=zp2tf(z1,p1,k1); %零点极点增益形式转换为传递函数形式[b1,a1]=lp2lp(Bap1,Aap1,Wn1);%低通滤波器频率转换[bz1,az1]=impinvar(b1,a1,1/T);%脉冲响应不变法设计数字滤波器传递函数figure(1)[H1,f1]=freqz(bz1,az1,Nn,1/T);%输出幅频响应和相频响应subplot(2,1,1);plot(f1,20*log10(abs(H1)));xlabel('频率/Hz');ylabel('振幅/dB');title('切比雪夫1型低通IIR');grid on;subplot(2,1,2);plot(f1,180/pi*unwrap(angle(H1)));xlabel('频率/Hz');ylabel('相位/^o');grid on;wp=0.59*pi;ws=0.41*pi;rp=1,rs=100;%数字滤波器截止频率、通带波纹和阻带衰减T=1/fs;Nn=128;%采样间隔Wp=wp/T;Ws=ws/T;%得到模拟滤波器的频率—采用脉冲响应不变法的频率转换形式[N,Wn]=cheb1ord(Wp,Ws,rp,rs,'s');%计算模拟滤波器的最小阶数[z,p,k]=cheb1ap(N,rp);%设计高通原型数字滤波器[Bap,Aap]=zp2tf(z,p,k); %零点极点增益形式转换为传递函数形式[b,a]=lp2hp(Bap,Aap,Wn);%高通滤波器频率转换[bz,az]=impinvar(b,a,1/T);%脉冲响应不变法设计数字滤波器传递函数figure(2)[H,f]=freqz(bz,az,Nn,1/T);%输出幅频响应和相频响应subplot(2,1,1);plot(f,20*log10(abs(H)));xlabel('频率/Hz');ylabel('振幅/dB');title('切比雪夫1型高通IIR');grid on;subplot(2,1,2);plot(f,180/pi*unwrap(angle(H)));xlabel('频率/Hz');ylabel('相位/^o');grid on;wp21=0.42*pi;wp22=0.49*pi;ws21=0.44*pi;ws22=0.47*pi;rp2=1,rs2=30;%数字滤波器截止频率、通带波纹和阻带衰减T=1/fs;Nn=128;%采样间隔Wp21=wp21/T;Wp22=wp22/T;Ws21=ws21/T;Ws22=ws22/T;%得到模拟滤波器的频率—采用脉冲响应不变法的频率转换形式Wo = sqrt(Ws21*Ws22);Bw = Ws22-Ws21;[N2,Wn2]=cheb1ord([Wp21 Wp22],[Ws21 Ws22],rp2,rs2,'s');%计算模拟滤波器的最小阶数[z2,p2,k2]=cheb1ap(N2,rp2);%设计带通原型数字滤波器[Bap2,Aap2]=zp2tf(z2,p2,k2); %零点极点增益形式转换为传递函数形式[b2,a2]=lp2bp(Bap2,Aap2,Wo,Bw);%带通滤波器频率转换[bz2,az2]=impinvar(b2,a2,1/T);%脉冲响应不变法设计数字滤波器传递函数figure(3)[H2,f2]=freqz(bz2,az2,Nn,1/T);%输出幅频响应和相频响应subplot(2,1,1);plot(f2,20*log10(abs(H2)));xlabel('频率/Hz');ylabel('振幅/dB');title('切比雪夫1型带通IIR');grid on;subplot(2,1,2);plot(f2,180/pi*unwrap(angle(H2)));xlabel('频率/Hz');ylabel('相位/^o');grid on;wp31=0.44*pi;wp32=0.47*pi;ws31=0.42*pi;ws32=0.49*pi;rp3=1,rs3=30;%数字滤波器截止频率、通带波纹和阻带衰减T=1/fs;Nn=128;%采样间隔Wp31=wp31/T;Wp32=wp32/T;Ws31=ws31/T;Ws32=ws32/T;%得到模拟滤波器的频率—采用脉冲响应不变法的频率转换形式Wo1 = sqrt(Wp31*Wp32);Bw1 = Wp32-Wp31;[N3,Wn3]=cheb1ord([Wp31 Wp32],[Ws31 Ws32],rp3,rs3,'s');%计算模拟滤波器的最小阶数[z3,p3,k3]=cheb1ap(N3,rp3);%设计带阻原型数字滤波器[Bap3,Aap3]=zp2tf(z3,p3,k3); %零点极点增益形式转换为传递函数形式[b3,a3]=lp2bs(Bap3,Aap3,Wo1,Bw1);%带阻滤波器频率转换[bz3,az3]=impinvar(b3,a3,1/T);%脉冲响应不变法设计数字滤波器传递函数figure(4)[H3,f3]=freqz(bz3,az3,Nn,1/T);%输出幅频响应和相频响应subplot(2,1,1);plot(f3,20*log10(abs(H3)));xlabel('频率/Hz');ylabel('振幅/dB');title('切比雪夫1型带阻IIR');grid on;subplot(2,1,2);plot(f3,180/pi*unwrap(angle(H3)));xlabel('频率/Hz');ylabel('相位/^o');grid on;我分析了很久,看书、网络上查也没找到原因,还请老师检查指正。