数字信号处理实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“dsp实验报告作业”。
数字信号处理 实验报告
实验一
序列的傅立叶变换
一、实验目的1.进一步加深理解DFS,DFT算法的原理;2.研究补零问题;3.快速傅立叶变换(FFT)的应用。
二、实验步骤
1.复习DFS和DFT的定义,性质和应用;
2熟悉MATLAB语言的命令窗口、编程窗口和图形窗口的使用;3利用提供的程序例子编写实验用程序;4.按实验内容上机实验,并进行实验结果分析;5.写出完整的实验报告,并将程序附在后面。
三、实验内容
1.周期方波序列的频谱
试画出下面四种情况下的的幅度频谱, 并分析补零后,对信号频谱的影响。
x(n)cos(0.48n)cos(0.52n)2.有限长序列x(n)的DFT(1)取x(n)(n=0:10)时,画出x(n)的频谱X(k)的幅度;(2)将(1)中的x(n)以补零的方式,使x(n)加长到(n:0~100)时,画出x(n)的频谱X(k)的幅度;
(3)取x(n)(n:0~100)时,画出x(n)的频谱X(k)的幅度。利用FFT进行谱分析x(t)2sin(4t)5cos(8t)3.已知:模拟信号
以t=0.01n(n=0:N-1)进行采样,求N点DFT的幅值谱。请分别画出N=45;N=50;N=55;N=60时的幅值曲线。
四、实验数据分析
1.周期方波序列的频谱分析 首先定义一个功能函数dfs function[Xk]=dfs(xn,N)n=[0:1:N-1];k=[0:1:N-1];WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;(1)L=5,N=20;%题1.(1)L=5;N=20;%对于(2),(3),(4)问,只要修改L,N的数值就好。n=1:N;xn=[ones(1,L),zeros(1,N-L)];Xk=dfs(xn,N);magXk=abs([Xk(N/2+1:N)Xk(1:N/2+1)]);k=[-N/2:N/2];figure(1)subplot(2,1,1);stem(n,xn);xlabel('n');ylabel('xtide(n)');title('DFS of SQ.wave:L=5,N=20');subplot(2,1,2);stem(k,magXk);axis([-N/2,N/2,0,16]);xlabel('k');ylabel('Xtide(k)');
(2)L=5,N=40;
(3).L=5,N=60
(4)L=7,N=60;
结果分析:虽然周期序列不存在FT,但是一个周期序列可以利用其DFS系数X(k)表示它的频谱分布规律,从以上各频谱图可以看出,随着补零点数的增加,周期序列的谐波次数越来越多,其频谱的包络线越来越平滑连续,更能反映幅度值随时间的变化。
2.有限长序列的DFT(1)
%题2-(1)n=0:10;xn=cos(0.48*pi*n)+cos(0.52*pi*n);N=11;Xk=fft(xn,N);
%序列x(n)的N点DFT k=0:N-1;wk=2*k/N;
subplot(1,1,1);stem(wk,abs(Xk),'.');title('频谱X(K)的幅度');xlabel('ω/π');ylabel('幅度');
(2)%题2-2 M=10;N=100;n=1:M;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)];figure(1)subplot(2,1,1);stem(n1,y1);xlabel('n');ylabel('x(n)');title('序列x(n),0
(3)
%Example2-3 M=10;N=100;n=0:M;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1=[0:1:N-1];y1=[xn(1:1:M),zeros(1,N-M)];figure(1)subplot(2,2,1);stem(n1,y1);xlabel('n');ylabel('x(n)');title('序列x(n),0
结果分析:由上述仿真图可得,随着n取值范围的增大,其频谱在[0,2π]上的采样间隔越来越小,采样点越来越多。采样点越多,其DFS频谱越接近FT的频谱。其相频特性曲线呈现周期性变化。
3.问题三 %题3 %N=45 figure(1)subplot(2,2,1)N=45;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);plot(q,abs(y))stem(q,abs(y))title('DFT N=45')%N=50 subplot(2,2,2)N=50;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);plot(q,abs(y))stem(q,abs(y))title('DFT N=50')%N=55 subplot(2,2,3)N=55;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);plot(q,abs(y))stem(q,abs(y))title('DFT N=55')%N=60 subplot(2,2,4)N=60;n=0:N-1;t=0.01*n;q=n*2*pi/N;x=2*sin(4*pi*t)+5*cos(8*pi*t);y=fft(x,N);plot(q,abs(y))stem(q,abs(y))title('DFT N=60')
结果分析:由上述仿真图可得,随着N取值的增大,其频谱在[0,2π]上的采样间隔越来越小,采样点越来越多。采样点越多,其DFS频谱越接近FT的频谱,幅值曲线越来越清晰,更能准确反应幅值随时间的变化规律。
五、心得体会
对于周期序列的离散傅里叶变换,通过matlab的模拟,可以更好的了解掌握序列采样间隔对其采样频谱的影响。在实验过程中,学习如何使用matlab程序语言解决问题,是很有价值的。让我对matlab的使用更为熟练。
实验二 用双线性变换法设计IIR数字滤波器
一、实验目的1.熟悉用双线性变换法设计IIR数字滤波器的原理与方法; 2. 掌握数字滤波器的计算机仿真方法;
3、通过观察对实际心电图的滤波作用,获得数字滤波器的感性知识。
二、实验内容
1.用双线性变换法设计一个巴特沃斯低通IIR滤波器,设计指标参数为:在通带内频率低于0.2π时,最大衰减小于1dB;在阻带内[0.3π,π]频率区间上,最小衰减大于15dB 2.以0.2π为采样间隔,打印出数字滤波器在频率区 间[0, 0.2π]上的幅值响应曲线。
3.用所设计的滤波器对实际的心电图信号采样序列
x(n)=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6, 6,6, 4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];)进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。三.实验步骤
1.复习有关巴特沃斯模拟滤波器设计和双线性变换法设计IIR滤波器的内容 2.参考例子程序用MATLAB语言编写仿真实验用程序; 3.在通用计算机上运行仿真程序
4.写出完整的实验报告并回答思考题。四.实验数据分析
1.巴特沃斯低通IIR滤波器的设计
由题可得,数字低通技术指标为
wp=0.2πrad, αp=1dB,ws=0.3πrad, αs=15dB 若T=1s,预畸变校正计算相应的模拟低通的技术指标为 Ωp=1dB,Ωs=15dB 通过计算可得阶数N=5.3056,向上取整的N=6.Ωc=0.7663rad/s,这样保证阻带技术指标满足要求,通带指标有富余。
以下是通过matlab实现的巴特沃斯低通IIR滤波器的设计 %1 T=1;Fs=1/T;wpz=0.2;wsz=0.3;wp=2*tan(wpz*pi/2);ws=2*tan(wsz*pi/2);rp=1;rs=15;%预畸变校正转换指标 [N,wc]=buttord(wp,ws,rp,rs,'s');%设计过渡模拟滤波器 [B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs);%用双线性变换法转换成数字滤波器 fk=0:1/512:1;wk=2*pi*fk;Hk=freqs(B,A,wk);figure(1);subplot(2,1,1);plot(fk,20*log10(abs(Hk)));grid on;title('模拟滤波器幅值响应曲线');xlabel('omega/pi');ylabel('幅度(dB)');axis([0,1,-100,5]);[Nd,wdc]=buttord(wpz,wsz,rp,rs);%调用buttord和butter直接设计数字滤波器
[Bz,Az]=butter(N,wdc);wk=0:pi/512:pi;Hz=freqz(Bz,Az,wk);subplot(2,1,2);plot(wk/pi,20*log10(abs(Hz)));grid on;title('数字滤波器幅值响应曲线');xlabel('omega/pi');ylabel('幅度(dB)');axis([0,1,-100,5]);
2.以0.2π为采样间隔,打印出数字滤波器在频率区 间[0, 0.2π]上的幅值响应曲线。
在第一问的基础上加上下面的程序 %2 figure(2);freqz(Bz,Az,[0:0.02*pi:0.2*pi])
3.在第一问程序的基础上加上如下程序即可
figure(3);x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];subplot(2,2,1);n=0:55;stem(n,x,'.');title('x(n)的脉冲响应');xlabel('n');ylabel('x(n)');A=0.09036;b1=[A,2*A,A];a1=[1,-1.2686,0.7051];h1=filter(b1,a1,x);[H1,w]=freqz(b1,a1,100);b2=[A,2*A,A];a2=[1,-1.0106,0.3583];h2=filter(b2,a2,h1);[H2,w]=freqz(b2,a2,100);b3=[A,2*A,A];a3=[1,-0.9044,0.2155];h3=filter(b3,a3,h2);[H3,w]=freqz(b3,a3,100);subplot(2,2,2);stem(n,h3,'.');xlabel('n');ylabel('y(n)');title('通过滤波器H1(z),H2(z),H3(z)后的y3(n)函数');subplot(2,2,3);H4=H1.*(H2);H=H4.*(H3);mag=abs(H);db=20*log10((mag+eps)/max(mag));plot(w/pi,db);xlabel('ω/π');ylabel('20log[Ha3(ejw)]');title('通过滤波器H1(z),H2(z),H3(z)后的对数频率响应20log[Ha3(ejw)]函数');grid;figure(4);N=1024;n=0:N/2-1;Xk=fft(x,N);AXk=abs(Xk(1:N/2));f=(0:N/2-1)*Fs/N;f=f/Fs;subplot(211);plot(f,AXk);title('x(n)的频谱');xlabel('f');ylabel('| X(k)|');axis([0,0.5,0,400]);
五、思考题
用双线性变换设计数字滤波器的过程中,下面变换公式的T值的取值,对设计结果是否有影响?为什么?
21z1s T1z1
虽然采用双线性变换法设计数字滤波器不会产生混叠现象,T得取值可以任选。双线性变换法具有非线性,T小一些,非线性的影响也就少一些。
六、心得体会
通过这次实验,我学会了如何使用matlab语言来实现IIR低通滤波器的设计,同时对于其数字低通技术指标的就算有了进一步的认识体会。
在做实验的过程中,面对种种困难,但是却在解决困难的过程中收获了很多。是一个很有意义的经历。
实验三
用窗函数法设计FIR数字滤波器
一.实验目的1.掌握用窗函数法设计FIR数字滤波器的原理和方法。2.熟悉线性相位FIR数字滤波器特性。3.了解各种窗函数对滤波特性的影响。二.实验原理
如果所希望的滤波器的理想频率响应函数为 Hd(e jω),则其对应的单位脉冲响应为
用窗函数w(n)将hd(n)截断,并进行加权处理,得到:
h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数H()为
如果要求线性相位特性,则h(n)还必须满足:
根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。要根据所设计的滤波特性正确选择其中一类。例如,要设计线性相位低通特性,可选择h(n)=h(N-1-n)一类,而不能选h(n)=-h(N-1-n)一类。三.实验内容
1.用MATLAB产生各种窗函数
%窗函数
subplot(4,2,1)m=200;a=boxcar(m);%矩形窗 m=1:200;plot(m,a)title('矩形窗');subplot(4,2,2)m=200;b=bartlett(m)%三角窗 m=1:200;plot(m,b)title(' 三角窗');subplot(4,2,3)m=200;c=hanning(m);%汉宁窗 m=1:200;plot(m,c)title('汉宁窗');subplot(4,2,4)m=200;d=hamming(m);%哈明窗 m=1:200;title(' 哈明窗');plot(m,d)subplot(4,2,5)m=200;e=blackman(m);%布莱克曼窗 m=1:200;plot(m,e)title('布莱克曼窗');subplot(4,2,6)m=200;f=kaiser(m,7.865);% 凯塞窗 m=1:200;plot(m,f)title(' 凯塞窗');subplot(4,2,7)plot(m,a,'r*',m,b,'g+',m,c,'y*',m,d,'b.',m,e,'y.',m,f,'k.')title(' 各种窗函数');
2.利用窗函数设计FIR滤波器
设计具有下列指标p=0.25,Rp=0.25dB,s=0.3,Rp=50dB的低通数字滤波器。
由已知条件Rp=50dB,通过计算可知应该选择哈明窗,哈明窗的Rps=53dB,选择窗函数时应该选择Rps>=50的,因而选择离50dB的哈明窗。
通过Bt=6.6π/N,Bt=ws-wp得到阶数N。
以下是利用matlab来实现FIR滤波器的设计。
%窗函数法设计FIR数字滤波器 wp=pi*0.25;ws=pi*0.3;%Rs=50dB,所以选择哈明窗 DB=ws-wp;%计算过渡带宽度 N=ceil(6.6*pi/DB);%计算哈明窗所需长度N wc=(wp+ws)/2/pi;%计算理想低通滤波器通带截止频率(关于π归一化)hn=fir1(N,wc);%调用fir1计算低通数字滤波器 %以下是绘图部分 figure(2)M=1024;hk=fft(hn,M);n=0:N;subplot(1,2,1);stem(n,hn,'.');%绘制序列h(n)xlabel('n');ylabel('h(n)');title('数字滤波器h(n)');k=1:M/2;w=2*(0:M/2-1)/M;subplot(1,2,2);plot(w,20*log10(abs(hk(k))));%绘制损耗函数曲线
axis([0,1,-80,5]);xlabel('ω/π');ylabel('20lg|Hg(ω)|');title('h(n)的损耗函数曲线');grid on;
结果分析:根据损耗函数可得,利用哈明窗实现了题目所要求的FIR低通滤波器。满足p=0.25,Rp=0.25dB,s=0.3,Rp=50dB。因而选择哈明窗可以很好的满足所需要求。
四、心得体会
本次实验是使用窗函数来设计FIR滤波器,在MATLAB中只需要将给定的参数输入到函数中即可马上得到处结果。通过本次实验,我对使用MATLAB快速设计滤波器的流程更为熟练,同时,也由衷地感叹MATLAB的功能强大之处,它让我们在设计时能节约大量的时间。
根据输入的参数以及结果,使我对课本上的设计滤波器的知识更为了解。更加巩固了理论知识。
南京邮电大学实 验 报 告实验名称_____熟悉MATLAB环境 ___ 快速傅里叶变换及其应用 ____IIR数字滤波器的设计_ FIR数字滤波器的设计课程名称 数字信号处理A班级学号_____......
JIANGSUUNIVERSITY OF TECHNOLOGY数字信号处理实验报告 学院名称: 电气信息工程学院专 业:班 级: 姓 名: 学 号: 指导老师: 张维玺(教授) 2013年12月20日实验一 离散时间信号的产......
怀化学院数学系实验报告实验项目名称:IIR数字滤波器的设计(1)指 导老 师: 欧卫华学姓实验项目制定人:实验项目审批人:年月日一、实验目的掌脉冲相应不变法设计IIR-Butterworth数......
实验一 自适应滤波器一、实验目的1、掌握功率谱估计方法2、会用matlab对功率谱进行仿真二、实验原理功率谱估计方法有很多种,一般分成两大类,一类是经典谱估计;另一类是现代谱......
数字信号处理心得体会某些事情让我们心里有了一些心得后,有这样的时机,要好好记录下来,从而不断地丰富我们的思想。那么写心得体会要注意的内容有什么呢?下面是小编为大家整理的......