实验2利用DFT分析信号频谱.docx
《实验2利用DFT分析信号频谱.docx》由会员分享,可在线阅读,更多相关《实验2利用DFT分析信号频谱.docx(11页珍藏版)》请在冰豆网上搜索。
实验2利用DFT分析信号频谱
实验2利用DFT分析信号频谱
一、实验目的
1、加深对DFT原理的理解。
2、应用DFT分析信号的频谱。
3、深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象及解决办法。
二、实验设备及环境
计算机、MATLAB软件环境。
三、实验原理
1、DFT与DTFT的关系
有限长序列
的离散时间傅里叶变换
在频率区间
的N个等间隔分布点
上的N个取样值可以由下式表示:
由上式可知,序列x(n)的N点DFTX(k),实际上就是x(n)序列的DTFT在N个等间隔频率点
上的样本值。
2、利用DFT求DTFT
由于DFT是DTFT的取样值,其相邻两个频率样本点的间距为
,所以如果我们增加数据的长度N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT来近似计算DTFT。
如果没有更多数据,可以通过补零来增加数据长度。
3、利用DFT分析连续时间信号的频谱
采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行两个操作:
一是采样,二是截断。
对于连续时间非周期信号
,按采样间隔T进行采样,截取长度为M,那么
对
进行N点频域采样,得到
因此,可以将利用DFT分析连续非周期信号频谱的步骤归纳如下:
(1)确定时域采样间隔T,得到离散序列
;
(2)确定截取长度M,得到M点离散序列
这里
为窗函数。
(3)确定频域采样点数N,要求N≥M。
(4)利用FFT计算离散序列的N点DFT,得到
。
(5)根据式(2-6)由
计算
采样点的近似值。
采用上述方法计算
的频谱,需要注意如下三个问题:
(1)频谱混叠。
如果不满足采样定理的条件,频谱会出现混叠误差。
对于频谱无限宽的信号,应考虑覆盖大部分主要频率分量的范围。
(2)栅栏效应和频谱分辨率。
使用DFT计算频谱,得到的结果只是N个频谱样本值,样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应”。
频谱分辨率与记录长度成正比,要提高频谱分辨率,就要增加记录时间。
(3)频谱泄露。
对信号截断会把窗函数的频谱引入到信号频谱,造成频谱泄露。
解决这个问题的主要办法是采用旁瓣小的窗函数,频谱泄露和窗函数均会引起误差。
因此,要合理选取采样间隔和截取长度,必要时还考虑加适当的窗。
对于连续时间周期信号,我们在采用计算机进行计算时,也总是要进行截断,序列总是有限长的,仍然可以采用上述方法近似计算。
4、可能用到的MATLAB函数与代码
实验中DFT运算可采用MATLAB中提供的函数fft来实现。
四、实验内容
1、已知
,完成如下要求:
(1)计算其DTFT,并画出在
区间的波形。
(2)计算4点DFT,并把结果显示在
(1)中所画的图形中。
(3)对x(n)补零,计算64点DFT,并显示结果。
(4)根据实验结果,分析是否可以由DFT计算DTFT,如果可以,如何实现。
实验代码及结果:
(1)&
(2)
>>n=0:
3;
>>x=[2-111];
>>w=0:
0.01*pi:
2*pi;
>>X1=x*exp(-j*n'*w);
>>X2=fft(x);
>>subplot(211);
>>plot(w,abs(X1));
>>holdon;
>>stem(n*pi/2,abs(X2),'fill');
>>axistight;
>>xlabel('\Omega');
>>title('Magnitude');
>>subplot(212);
>>plot(w,angle(X1));
>>holdon;
>>stem(n*pi/2,angle(X2),'fill');
>>xlabel('\Omega');
>>title('Phase');
>>axistight;
(3)&(4)
>>n=0:
3;
>>x=[2-111];
>>w=0:
0.01*pi:
2*pi;
>>X1=x*exp(-j*n'*w);
>>subplot(211);
>>plot(w,abs(X1));
>>axistight;
>>xlabel('\Omega');
>>title('Magnitude');
>>holdon;
>>subplot(212);
>>plot(w,angle(X1));
>>axistight;
>>xlabel('\Omega');
>>title('Phase');
>>holdon;
>>n=0:
63;
>>X2=fft(x,64);
>>subplot(211);
>>stem(n*2*pi/64,abs(X2),'fill');
>>subplot(212);
>>stem(n*2*pi/64,angle(X2),'fill');
(4) 通过实验我们发现DFT实际上是对DTFT的采样值。
因此,我们可以在已知序列后补零至某一足够的长度,在进行DFT运算,得到的DFT的包络就可以近似为信号的DTFT。
2、考察序列
(1)0≤n≤10时,用DFT估计x(n)的频谱;将x(n)补零加长到长度为100点序列用DFT估计x(n)的频谱。
要求画出相应波形。
(2)0≤n≤100时,用DFT估计x(n)的频谱,并画出相应波形。
(3)根据实验结果,分析怎样提高频谱分辨率。
实验代码及结果:
>>n=[0:
10];
>>x=cos(0.48*pi*n)+cos(0.52*pi*n);
>>X=fft(x);
>>subplot(211);
>>stem(n*2*pi/11,abs(X),'fill');
>>xlabel('\Omega');
>>title('Magnitude');
>>subplot(212);
>>stem(n*2*pi/11,angle(X),'fill');
>>xlabel('\Omega');
>>title('Phase');
>>n=[0:
99];
>>X=fft(x,100);
>>subplot(211);
>>stem(n*2*pi/100,abs(X),'fill');
>>xlabel('\Omega');
>>title('Magnitude');
>>axistight;
>>subplot(212);
>>stem(n*2*pi/100,angle(X),'fill');
>>xlabel('\Omega');
>>title('Phase');
>>axistight;
(2)
>>n=[0:
99];
>>x=cos(0.48*pi*n)+cos(0.52*pi*n);
>>X=fft(x);
>>subplot(211);
>>stem(n*2*pi/101,abs(X),'fill');
>>xlabel('\Omega');
>>title('Magnitude');
>>axistight;
>>subplot(212);
>>stem(n*2*pi/101,angle(X),'fill');
>>xlabel('\Omega');
>>title('Phase');
>>axistight;
(3)
由上述结果可知,增加序列的长度可以有效提高频谱分辨率。
3、已知信号
其中
。
从x(t)的表达式可以看出,它包含3个频率的正弦波,但是,从其时域波形上来看,似乎是一个正弦信号,利用DFT做频谱分析,确定适合的参数,使得到的频谱的频率分辨率符合需要。
实验代码及结果:
T=input('T=');
n=0:
1:
1/T;
x=0.15*sin(2*pi*n*T)+sin(4*pi*n*T)-0.1*sin(6*pi*n*T);
X=fft(x);
subplot(211);
stem(n*2*pi/(1/T+1),abs(X),'fill');
xlabel('\Omega');
title('Magnitude');
axistight;
subplot(212);
stem(n*2*pi/(1/T+1),angle(X),'fill');
xlabel('\Omega');
title('Phase');
axistight;
>>Exp1_3
T=0.01
>>Exp1_3
T=0.1
>>Exp1_3
T=0.02
>>Exp1_3
T=0.05
由此可见,T选择0.01——0.02s之间的数值结果较好。
4、利用DFT近似分析连续时间信号
的频谱(幅度谱)。
分析采用不同的采样间隔和截取长度进行计算的结果,并最终确定合适的参数。
实验代码及结果:
T=input('T=');
End=input('EndTime=');
n=0:
1:
End/T;
x=exp(-0.1*n*T);
X=fft(x);
subplot(211);
stem(n*2*pi/(End/T+1),abs(X),'fill');
xlabel('\Omega');
title('Magnitude');
axistight;
subplot(212);
stem(n*2*pi/(End/T+1),angle(X),'fill');
xlabel('\Omega');
title('Phase');
axistight;
>>Exp1_4
T=0.5
EndTime=50
>>Exp1_4
T=1
EndTime=100
>>Exp1_4
T=2
EndTime=200
>>Exp1_4
T=5
EndTime=500
由此可见,采样周期T=2s,采样100点左右时效果较好。
五、收获与体会
这是DSP的第一次实验,由于对DSP的原理还不了解,导致一开始实验的结果很多都是错误的,这份实验报告是重新做了一遍的结果。
DFT具有时、频双离散的特点,因此适合计算机做频谱分析。
本次实验即是初步进行了简单信号的谱分析,加深了对DFT的理解。