1、数字信号处理实验报告姓名:徐娇专业:通信工程 实验二 利用DFT分析信号频谱一、实验目的1.加深对DFT原理的理解。2.应用DFT分析信号的频谱。3.深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象及解决方法。二、实验设备与环境计算机、MATLAB软件环境。三、实验基础理论1.DFT与DTFT的关系有限长序列的离散时间傅里叶变换X()在频率区间的N个等间隔分布点上的N个取样值可以有下式表示:由上式可知,序列x(n)的N点DFT,实际上就是x(n)序列的DTFT在N个等间隔频率点上样本。2.利用DFT求DTFT方法1:由恢复出的方法如下:由上式可以得到:其中为内插函数方法2:实际在
2、MATLAB计算中,上述插值运算不见得是最好的办法。由于DFT是DTFT的取样值,其相邻两个频率样本点的间距为2,所以如果我们增加数据的长度N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT计算DTFT。如果没有更多的数据,可以通过补零来增加数据长度。3.利用DFT分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。对于连续时间非周期信号,按采样间隔T进行采样,阶段长度M,那么:对进行N点频域采样,得到采用上述方法计算信号的频谱需要注意如下三个问题:(1)频谱混叠(2)栅栏效应和频谱分辨率(
3、3)频谱泄露4.用到的MATLAB函数与代码实验中DFT运算可采用MATLAB中提供的函数fft来实现,DTFT可采用MATLAB矩阵运算的方法进行计算,如下式所示:四、实验内容 1.已知x(n)=2,-1,1,1,完成如下要求:(1)计算他的DTFT,并画出-,区间的波形。(2)计算4点DFT,并把结果显示在(1)所画的图形中。(3)对x(n)补零,计算64点DFT,并显示结果。(4) 根据实验结果,分析是否可以由DFT计算DTFT,如果可以,如何实现。实验代码与实验结果(1)DTFT及波形 n=0:3; w=-pi:0.01*pi:pi; X=x*exp(-j*n*w); *计算频谱 su
4、bplot(211); plot(w,abs(X); *绘制DTFT波形 xlabel(Omega/pi); title(magnitude); axis tight subplot(212); plot(w,angle(X)/pi); xlabel(Omega/pi); title(Phase);axis tight(2)4点DFT及波形 n=0:3; w=-pi:0.01*pi:pi; X=x*exp(-j*n*w); subplot(211); hold on n=0:3; w=-pi:0.01*pi:pi; X=x*exp(-j*n*w); y=fft(x,4); *计算4点DFT s
5、ubplot(211); hold on plot(w,abs(X); xlabel(Omega/pi); title(magnitude); axis tight stem(0:3,abs(y),fill); subplot(212); hold on plot(w,angle(X)/pi); xlabel(Omega/pi); title(Phase); axis tight stem(0:3,angle(y)/pi,fill);(3)补零,64点DFT及波形 x=2,-1,1,1; x=x,zeros(1,60); *补零 y=fft(x,64); *计算补零后64点DFT subplo
6、t(211); stem(0:63,abs(y),fill); title(Magnitude); subplot(212); stem(0:63,angle(y)/pi,fill); axis tight(4)答:可以由DFT计算DTFT。理由: 由实验结果波形看出,序列补零后,长度越长,DFT点数越多,其DFT越逼近其DTFT的连续波形。所以,令序列补零至无穷长时,可由其DFT当做其DTFT。2.考察序列x(n)=cos(0.48n)+cos(0.52n)(1)0=n=10时,用DFT估计x(n)的频谱;将x(n)补零加长到长度为100点序列用DFT估计x(n)的频谱,要求画出相应波形。(
7、2)0=n=100时,用DFT估计x(n)的频谱。并画出波形。(3)根据实验结果,分析怎样提高频谱分辨率实验代码与实验结果:(1)0=n n=0:10; x=cos(0.48*pi*n)+cos(0.52*pi*n); y=fft(x); subplot(211); stem(0:10,abs(y),fill); title(Magnitude); subplot(212); stem(0:10,angle(y)/pi,fill); title(Phase)补零 n=0:10; x=cos(0.48*pi*n)+cos(0.52*pi*n); x=x,zeros(1,89); y=fft(x)
8、; subplot(211); stem(0:99,abs(y),fill); title(Magnitude); subplot(212); stem(0:99,angle(y)/pi,fill); title(Phase)(2)0=n n=0:100; x=cos(0.48*pi*n)+cos(0.52*pi*n); y=fft(x); subplot(211); stem(0:100,abs(y),fill); title(Magnitude); subplot(212); stem(0:100,angle(y)/pi,fill); title(Phase)(3)答:频谱分辨率,它与信号
9、采集时间成反比,它的定义是在使用DFT时,在频DFT率轴上的所能得到的最小频率间隔,也就是与采样间隔成反比。所以我们可以通过增加时域内信号采样点数来增加分辨率。 3.已知信号x(t)=0.15sin2f1t+sin2f2t-0.1sin2f3t,其f1=1Hz,f2=2Hz,f3=3Hz。从x(t)的表达式可以看出,它包含三个频率的正弦波,但是,从其时域波形来看,似乎是一个正弦信号,利用DFT做频谱分析,确定适合的参数,使得到的频谱的频率分辨率符合需要。实验代码与实验结果: n=0:0.1:6; x=0.15*sin(2*pi*n)+sin(4*pi*n)-0.1*sin(6*pi*n); y
10、=fft(x); subplot(211); stem(0:60,abs(y),fill); title(Magnitude); subplot(212); stem(0:60,angle(y)/pi,fill); title(Phase)4.利用DFT金丝分析连续时间信号x(t)=e-0.1 u(t)的频谱(幅度值)。分析采用不同的采样间隔和截取长度进行计算的结果,并最终确定合适的参数。 实验代码与实验结果: n=-6:0.1:6; x=exp(-0.1*n).*heaviside(n); y=fft(x); subplot(211); stem(-60:60,abs(y),fill); title(Magnitude); subplot(212); stem(-60:60,angle(y)/pi,fill); title(Phase)五、实验心得与体会通过这次实验,我加深了对DFT原理的理解和学习,懂得了如何应用DFT分析信号的频谱,另外,通过直观的实验结果,我对DFT可以分析信号频谱的原理有了更加深刻的认识。通过实验与理论课知识的结合,让我对数字信号处理这门课程有了初步的了解,产生了浓厚的兴趣,为今后的学习打下坚实的基础。另外,在实验中由于对软件运用不熟练,对知识理解不透彻产生了问题,这是我今后需要改进的,请老师谅解批评指正。所以,这次实验令我受益匪浅。