资源描述:
《实验报告一实验报告要求语音信号实验数字信号处理DTFT》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一数字信号处理综合实验一、实验目的目的:综合运用数字信号处理的理论知识进行信号的采样,重构,频谱分析和滤波器的设计,通过理论推导得出相应结论,再利用Matlab作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。二、基本要求1.掌握数字信号处理的基本概念、基本理论和基本方法;2.学会MATLAB的使用,掌握MATLAB的程序设计方法;3.掌握用MATLAB设计简单实验验证采样定理的方法;4.掌握在Windows环境下语音信号采集的方法;5.学会用MATLAB对信号进行频谱分析;6.掌握MATLAB设计FIR和IIR数字滤波器的方法;三、实验内容(1)Matlab产生离散
2、信号的方法,作图的方法,以及基本运算操作(2)对连续正弦信号以不同的采样频率作采样(3)对采样前后信号进行傅立叶变换,并画频谱图(4)分析采样前后频谱的有变化,验证采样定理。掌握画频谱图的方法,深刻理解采样频率,信号频率,采样点数,频率分辨率等概念四、主要实验仪器及材料微型计算机、Matlab。五、实验步骤1.设计一简单正弦信号,通过改变采样率观察采样前后的信号变化。程序:clear;closeall;f=10;t=0:0.01:9/f;x1=sin(2*pi*10*t+0.3);fs=40;t1=0:1/fs:9/f;x2=sin(2*pi*10*t1+0.3);subplot(3,
3、1,1);plot(t,x1);title('原始信号');subplot(3,1,2);plot(t,x1);holdon;stem(t1,x2,'g');title('采样过程');subplot(3,1,3);plot(t1,x2);title('采样后信号');X1=fft(x1);X2=fft(x2);subplot(211);plot(t,abs(X1));title('原始信号频谱');subplot(212);plot(t1,abs(X2));title('采样后信号频谱');波形:采样率为10Hz时:采样率为40Hz时:采样率为80Hz时:采样率为200Hz时:当采样
4、率大于原始信号频率的两倍时,采样前后信号频率基本不发生变化,信号不失真采样率越大,接近原始信号。频谱也会改变。2.设计数字滤波器和画出频率响应带阻滤波器性能指标,fp1=4800Hz,fp2=5200Hz,fc1=4600Hz,fc2=5400Hz,Rs=30dB,Rp=1dB。([fp1fp2]:阻带截至频率;[fc1fc2]:通带截至频率)clear;closeall;fs=22050;ws=[48005200]*2/fs;wp=[46005400]*2/fs;%通带和阻带边界频率Rp=1;Rs=30;Nn=128;%通带波纹和阻带衰减以及绘制频率特性的数据点数[NN,Wn]=el
5、lipord(wp,ws,Rp,Rs);%求取数字滤波器的最小阶数和归一化截至频率[b,a]=ellip(NN,Rp,Rs,Wn,'stop');%设计滤波器freqz(b,a,512,fs);title('椭圆带阻滤波器');%椭圆带阻滤波器%双线性变换法设计的椭圆低通滤波器:clear;closeall;fp=4500;fc=6500;Rs=100;Rp=10;fs=22050;wc=2*fc/fs;wp=2*fp/fs;[n,wn]=ellipord(wp,wc,Rp,Rs);[b,a]=ellip(n,Rp,Rs,wn);freqz(b,a,512,fs)若设计FIR滤波器,要
6、阻止5000Hz的高频信号通过,即设计如下滤波器特性,%最优化设计法设计带阻滤波器clear;closeall;fs=22050;n=100;%滤波器阶数f=[04600*2/fs4800*2/fs5400*2/fs5600*2/fs1];%频率向量a=[110011];%振幅向量b=firls(n,f,a);%采用firls设计滤波器[h,w1]=freqz(b);%计算其频率响应plot(w1/pi,abs(h));%绘制滤波器的幅频响应title('最优化法设计的带阻滤波器');3.用滤波器对信号进行滤波clear;closeall;fs=22050;n=100;%滤波器阶数f=
7、[04600*2/fs4800*2/fs5400*2/fs5600*2/fs1];%频率向量a=[110011];%振幅向量b=firls(n,f,a);%采用firls设计滤波器[h,w1]=freqz(b);%计算其频率响应plot(w1/pi,abs(h));%绘制滤波器的幅频响应title('最优化法设计的带阻滤波器');xx=filter(b,a,y);%对信号y滤波XX=fftshift(fft(xx));%求经过滤波后信号的傅立叶