数字信号处理实验报告实验一 利用DFT分析信号频谱一、实验目的1.加深对DFT原理的理解 2.应用DFT分析信号的频谱3.深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象及解决方法二、实验设备与环境计算机、MATLAB软件环境三、实验基础理论1.DFT与DTFT的关系DFT实际上是DTFT在单位圆上以的抽样,数学公式表示为: , (2—1)2、利用DFT求DTFT方法一:利用下列公式: (2—2)其中为内插函数方法二:实际在MATLAB计算中,上述插值运算不见得是最好的办法由于DFT是DTFT的取样值,其相邻两个频率样本点的间距为,所以如果我们增加数据的长度N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT计算DTFT如果没有更多的数据,可以通过补零来增加数据长度3、利用DFT分析连续时间函数利用DFT分析连续时间函数是,主要有两个处理:①抽样,②截断对连续时间信号一时间T进行抽样,截取长度为M,则 (2—3)再进行频域抽样可得 (2—4)因此,利用DFT分析连续时间信号的步骤如下:(1)、确定时间间隔,抽样得到离散时间序列.(2)、选择合适的窗函数和合适长度M,得到M点离散序列.(3)、确定频域采样点数N,要求N≥M。
4)、利用FFT计算N点DFT,得到5)、根据式(2—4)计算的近似值利用上述方法分析连续连续时间时,应该注意以下问题:(1)、频谱泄露(2)、频谱混叠(3)、栅栏效应和频谱分辨率四、实验内容1、已知x(n)={2,-1,1,1},完成如下要求: (1)、计算他的DTFT,并画出[-π,π]区间的波形 (2)、计算4点DFT,并把结果显示在(1)所画的图形中 (3)、对x(n)补零,计算64点DFT,并显示结果 (4)、 根据实验结果,分析是否可以由DFT计算DTFT,如果可以,如何实现.(1)(2)实验代码如下:x=[2 -1 1 1];n=0:3;w=0:0.01*pi:pi*2;X1=x*exp(-j*n'*w);X2=fft(x)subplot(211);plot(w,abs(X1));hold on;stem(n*pi/2,abs(X2),'filled');axis tight;subplot(212);plot(w,angle(X1));hold on;stem(n*pi/2,angle(X2),'filled');axis tight;MATLAB图形如下:(3)实验代码如下:N=0:63;x=[-2 -1 1 1 zeros(1,60)];Y=fft(x);subplot(211);stem(abs(Y),'filled');subplot(212);stem(angle(Y),'filled');MATLAB图像如下:(4)答:可以由DFT计算DTFT。
由实验结果波形看出,序列补零后,长度越长,DFT点数越多,其DFT越逼近其DTFT的连续波形所以,令序列补零至无穷长时,可由其DFT当做其DTFT2、考察序列 x(n)=cos(0.48πn)+cos(0.52πn) (1)0<=n<=10时,用DFT估计x(n)的频谱;将x(n)补零加长到长度为100点序列用DFT估计x(n)的频谱,要求画出相应波形2)0<=n<=100时,用DFT估计x(n)的频谱并画出波形3)根据实验结果,分析怎样提高频谱分辨率(1)实验程序代码如下:n=0:10;k=0:10;x=cos(0.48*pi*n)+cos(0.52*pi*n);Y=fft(x);subplot(211);stem(k,abs(Y),'filled');subplot(212);stem(k,angle(Y),'filled');MATLAB波形如下:将补零至100点再分析其频谱程序代码:n=[n1 n2]k=0:99n1=0:10x1=cos(0.48*pi*n1)+cos(0.52*pi*n1);n2=11:99x2=zeros(1,89);x=[x1 x2];Y=fft(x);subplot(211);stem(k,abs(Y),'filled');subplot(212);stem(k,angle(Y),'filled');MATLAB图形如下:(2)0≤n≤100时程序代码如下:n=0:100; x=cos(0.48*pi*n)+cos(0.52*pi*n); y=fft(x); subplot(211); stem(0:100,abs(y),'filled'); subplot(212); stem(0:100,angle(y)/pi,'filled'); MATLAB图形如下:(3)可以通过增加N来提高频谱分辨率。
3、已知信号x(t)=0.15sin2πf1t+sin2πf2t-0.1sin2πf3t,其f1=1Hz,f2=2Hz,f3=3Hz从x(t)的表达式可以看出,它包含三个频率的正弦波,但是,从其时域波形来看,似乎是一个正弦信号,利用DFT做频谱分析,确定适合的参数,使得到的频谱的频率分辨率符合需要T=input('T=');M=input('M=');N=input('N=');k=0:N-1;t1=0:T:(M-1)*T;x1=0.15*sin(2*pi*t1)+sin(4*pi*t1)-0.1*sin(6*pi*t1);T2=M*T:N-1;x2=zeros(1,N-M*T);x=[x1 x2];X=fft(x);Y=T*X;subplot(211);stem(k,abs(Y),'filled');subplot(212);stem(k,angle(Y),'filled');MATLAB波形图如下:T=1,M=4,N=10MATLAB图形如下:4、利用DFT分析连续时间信号x(t)=e-0.1 u(t)的频谱(幅度值)分析采用不同的采样间隔和截取长度进行计算的结果,并最终确定合适的参数。
程序代码:T=input('T=');M=input('M=');N=input('N=');k=0:N-1;t1=0:T:(M-1)*T;x1=exp(-0.1*t1)T2=M*T:N-1;x2=zeros(1,N-M*T);x=[x1 x2];X=fft(x);Y=T*X;stem(k,abs(Y),'filled');T=1 M=3,N=10波形图如下:T=1,M=4,T=20波形图如下:五、实验心得与体会通过上机实验,更加深入的了解到了利用DFT分析连续时间信号的优缺点以及处理方法,同于对于DFT和DTFT和FT 的关系也有了更进一步的认识。