《【2017年整理】北京理工大学数字信号处理实验二 利用DFT分析信号频谱》由会员分享,可在线阅读,更多相关《【2017年整理】北京理工大学数字信号处理实验二 利用DFT分析信号频谱(14页珍藏版)》请在金锄头文库上搜索。
1、实验2 利用DFT分析信号频谱姓名:明眸皓齿王师傅班级:*学号:*实验时间:第十二周周三下午第二大节1一实验目的1、 加深对 DFT 原理的理解。2、 应用 DFT 分析信号的频谱。3、 深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。二实验设备与环境计算机、MATLAB 软件环境三实验原理1. DFT 与 DTFT 的关系有限长序列 的离散时间傅里叶变换 在频率区间()01)xnN()jXe的 N 个等间隔分布的点 上的 N 个取样值可(022/(01kNk以由下式表示: 212/0()()()jknj NkNXexeX由上式可知,序列 的 N 点 DFT ,实
2、际上就是 序列的 DTFT 在 N 个n()xn等间隔频率点 上样本 。2/(1)kkk2. 利用 DFT 求 DTFT方法 1:由 恢复出 的方法如图 2.1 所示:()Xk()je() () ()jkxnXeIDFTTF 由图 2.1 所示流程可知: 10()()()Nj jn knjNk nkXexeWe 由式 2-2 可以得到 12()()NjkxeX其中 为内插函数12sin(/)() NjeNA方法 2:然而在实际 MATLAB 计算中,上述插值运算不见得是最好的办法。由于 DFT 是 DTFT 的取样值,其相邻两个频率样本点的间距为 ,所以如果我/N们增加数据的长度 N,使得到的
3、 DFT 谱线就更加精细,其包络就越接近 DTFT 的结果,这样就可以利用 DFT 来近似计算 DTFT。如果没有更多数据,可以通过补零来2增加数据长度。3. 利用 DFT 分析连续时间信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行两个操作:一是采样,二是截断。对于连续时间非周期信号 ,按采样间隔 T 进行采样,截取长度 M,那么()axt10() ()Mjt jntaaanXjedxe对 进行 N 点频域采样,得到aj 2120()()()MjknNa aMknNTjxTeX因此,可以将利用 DFT 分析连续非周期信号频谱的步骤归纳如下:(1) 确定
4、时域采样间隔 T,得到离散序列 ;()xn(2) 确定截取长度 M,得到 M 点离散序列 ,这里()Mww(n)为窗口函数。(3) 确定频域采样点数 N,要求 。(4) 利用 FFT 计算离散序列的 N 点 DFT,得到 ;()MXk(5) 根据式(2-6)由 计算 采样点的近似值。()MXk()aj四 实验内容1.已知 ,完成如下要求:()2,1xn(1)计算其 DTFT,并画出 区间的波形。,(2)计算 4 点 DFT,并把结果显示在(1)所画图形中。(3)对 补零,计算 64 点 DFT,并显示结果。()xn(4)根据实验结果,分析是否可以由 DFT 计算 DTFT,如果可以,如何实现。
5、(1)代码:x=2,-1,1,1n=0:3w=-pi:0.01*pi:piX=x*exp(-j*n*w)subplot(2,1,1)plot(w,abs(X)xlabel(Omega/pi)title(Magnitude)3axis tightsubplot(2,1,2)plot(w,angle(X)/pi)xlabel(Omega/pi)title(Phase)axis tight(2 )代码:x=2,-1,1,1n=0:3w=-pi:0.01*pi:piX=x*exp(-j*n*w)subplot(2,1,1)plot(w,abs(X)xlabel(Omega/pi)title(Magni
6、tude)axis tightsubplot(2,1,2)plot(w,angle(X)/pi)xlabel(Omega/pi)title(Phase)axis tighty=fft(x)subplot(2,1,1)hold onstem(0:3,abs(y),fill)title(Magnitude)subplot(2,1,2)hold on stem(0:3,angle(y)/pi,fill)4ylabel(/pi)title(Phase)(3 )代码:x=2,-1,1,1x=x,zeros(1,60)y=fft(x,64)subplot(2,1,1)stem(0:63,abs(y),fi
7、ll)title(Magnitude)axis tightsubplot(2,1,2)stem(0:63,angle(y)/pi,fill)xlabel(Omega/pi)ylabel(/pi)title(Phase)5(4 )由 DFT 可以计算出 DTFT。从上面几个图中我们可以看出, DFT 可以看作是 DTFT的取样值,其相邻两个频率样本点的间距为 ,所以如果我们增加数据的长度 N(即2/N减小点与点之间的间距) ,得到的 DFT 谱线就更加精细,其包络也就越接近 DTFT 的结果,这样就可以利用 DFT 来近似计算 DTFT。2.考察序列 ()cos0.48)cos(0.52)xnn
8、n(1) ,用DFT估计 的频谱;将 补零加长到长度为 100点序列用0x(xDFT估计 的频谱。要求画出相应波形。()x(2) 时,用DFT 估计 的频谱,并画出波形。n()xn(3)根据实验结果,分析怎样提高频谱分辨率。(1)代码:n=0:10x=cos(0.48*pi*n)+cos(0.52*pi*n)y=fft(x)subplot(2,1,1)stem(0:10,abs(y),fill)title(Magnitude)subplot(2,1,2)stem(0:10,angle(y)/pi,fill)xlabel(Omega/pi)ylabel(/pi)title(Phase)6补零代码
9、:n=0:10x=cos(0.48*pi*n)+cos(0.52*pi*n)x=x,zeros(1,89)y=fft(x)subplot(2,1,1)stem(0:99,abs(y),fill)title(Magnitude)subplot(2,1,2)stem(0:99,angle(y)/pi,fill)xlabel(Omega/pi)ylabel(/pi)title(Phase)7(2 )代码:n=0:100x=cos(0.48*pi*n)+cos(0.52*pi*n)y=fft(x)subplot(2,1,1)stem(0:100,abs(y),fill)title(Magnitude)
10、subplot(2,1,2)stem(0:100,angle(y)/pi,fill)xlabel(Omega/pi)ylabel(/pi)title(Phase)(3 )通过补零不能提高分辨力,但能提高分辨率。从上述结果,我们可以发现使用 DFT 计算频谱,得到的结果只是 N 个频谱样本值,样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应” 。由 知,1pFt频谱分辨率与纪录长度成反比,所以要提高频谱分辨率,就要增加记录时间。故可以通过补零提高频谱分辨率。对于分辨力,可以通过增加取样密度(减小取样间隔)提高频谱分辨力。3.已知信号 其中123()0.5sin(2)si()0.1
11、sin(),xtftftft=1Hz, =2Hz, =3Hz。从 的表达式可以看出,它包含三个频率的正弦波,1f2f3fx但是,从其时域波形来看,似乎是一个正弦信号,利用DFT做频谱分析,确定适合的参数,使得到的频谱的频率分辨率符合需要。8(1 ) N=50,tp=0.1s 时t=0:0.01:1x=0.15*sin(2*pi*1*t)+sin(2*pi*2*t)-0.1*sin(2*pi*3*t)X=fft(x,100) n=0:99stem(n,abs(X),filled)xlabel(Omega/Hz)title(Magnitude)axis tight不符合要求(2 ) N=50,tp
12、=0.5s 时:t=0:0.5:1x=0.15*sin(2*pi*1*t)+sin(2*pi*2*t)-0.1*sin(2*pi*3*t)X=fft(x,50) n=0:49stem(n,abs(X),filled)xlabel(Omega/Hz)title(Magnitude)axis tight9不符合要求(3 ) N=50,tp=0.01s 时t=0:0.01:1x=0.15*sin(2*pi*1*t)+sin(2*pi*2*t)-0.1*sin(2*pi*3*t)X=fft(x,50) n=0:49stem(n,abs(X),filled)xlabel(Omega/Hz)title(M
13、agnitude)axis tighttp 符合要求,但是只有 4 个冲击点,应该有 6 个,故应增大 N。(4 ) N=100,tp=0.01s10t=0:0.01:1x=0.15*sin(2*pi*1*t)+sin(2*pi*2*t)-0.1*sin(2*pi*3*t)X=fft(x,100) n=0:99stem(n,abs(X),filled)xlabel(Omega/Hz)title(Magnitude)axis tight此时 DFT 的包络形状已经很接近 DTFT 了。故取 N=100,tp=0.01s4. 利用DFT近似分析连续时间信号 的频谱。分析采用不同的采样间0.1()(
14、)txteu隔和截取长度进行计算的结果,并最终确定适合的参数。(1 ) tp=1s,N=10t=0:10x=exp(-0.1*t)X=fft(x,11)stem(t,abs(X),filled)xlabel(Omega/Hz)title(Magnitude)axis tight11(2 ) tp=1s,N=100t=0:0.1:10x=exp(-0.1*t)X=fft(x,101)stem(t,abs(X),filled)xlabel(Omega/Hz)title(Magnitude)axis tight(3 ) tp=0.1s,N=100t=0:0.1:10x=exp(-0.1*t)X=ff
15、t(x,101)stem(t,abs(X),filled)12xlabel(Omega/Hz)title(Magnitude)axis tight(4 ) tp=0.1s,N=1000t=0:0.1:100x=exp(-0.1*t)X=fft(x,1001)stem(t,abs(X),filled)xlabel(Omega/Hz)title(Magnitude)axis tight可以看出 tp=0.1s,N=1000 时, DFT 包络已经很接近 DTFT 结果了。分析:从上面几个图我们可以看出,取样间隔越小,即采样点数越多,得到信号的频谱分辨力就越强;增加数据的长度 N,得到的 DFT 谱线就越精细,其包络就越接近13DTFT 的结果。因此,应该缩小取样间隔 T,增加数据的长度 N。五 心得与体会通过本次实验,加深了我对于利用 DFT 分析信号频谱的原理的理解,通过分析实现过程中出现