实验二 应用FFT对信号进行频谱分析
一、 实验目的
1、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉FFT算法及其程序的编写。
2、熟悉应用FFT对典型信号进行频谱分析的方法。
3、了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。
二、实验原理与方法
①
一个连续信号的频谱可以用它的傅立叶变换表示为
+ Xa(jW)=-jWtx(t)edtòa- (1)
如果对该信号进行理想采样,可以得到采样序列
x(n)=xa(nT) (2)
同样可以对该序列进行z变换,其中T为采样周期
X(z)=?+ x(n)z-n+ - (3)
令z为ejw,则序列的傅立叶变换
X(ejw)=?x(n)ejwn- (4)
其中ω为数字频率,它和模拟域频率的关系为
w=WT=W/fs (5)
式中的是采样频率。上式说明数字频率是模拟频率对采样率的归一化。同模拟域的情况相似,
数字频率代表了序列值变化的速率,而序列的傅立叶变换称为序列的频谱。序列的傅立叶变换和对应的采样信号频谱具有下式的对应关系。
1X(e)=Tjw?+ - w-2pXa(j) (6)
T即序列的频谱是采样信号频谱的周期延拓。从式(6)可以看出,只要分析采样序列的谱,就可以得到相应的连续信号的频谱。注意:这里的信号必须是带限信号,采样也必须满足Nyquist定理。
在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。无限长的序列也往往可以用有限长序列来逼近。有限长的序列可以使用离散傅立叶变换(DFT)。当序列的长度是N时,定义离散傅立叶变换为:
X(k)=DFT[x(n)]=其中W=e2pj-N?N-1n=0WNkn
(7)
,它的反变换定义为:
1x(n)=IDFT[X(k)]=N根据式(3)和(7),则有
?N-1n=0X(k)WNkn (8)
X(z)|z=Wnk=N?N-1n=0x(n)WNnk=DFT[x(n)] (9)
j2pN可以得到X(k)2pk的点,就
NN是将单位圆进行N等分以后第k个点。所以,X(k)是z变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样。时域采样在满足Nyquist定理时,就不会发生频谱混淆;同样地,在频率域进行采样的时候,只要采样间隔足够小,也不会发生时域序列的混淆。 ②
DFT是对序列傅立叶变换的等距采样,因此可以用于序列的频谱分析。在运用DFT进行频谱分析的时候可能有三种误差,分析如下: (1)混淆现象
从式(6)中可以看出,序列的频谱是采样信号频谱的周期延拓,周期是2π/T,因此当采样速率不满足Nyquist定理,即采样频率fs=1/T小于两倍的信号(这里指的是实信号)频率时,经过采样就会发生频谱混淆。这导致采样后的信号序列频谱不能真实地反映原信号的频谱。所以,在利用DFT分析连续信号频谱的时候,必须注意这一问题。避免混淆现象的唯一方法是保证采样的速率足够高,使频谱交叠的现象不出现。这就告诉我们,在确定信号的采样频率之前,需要对频谱的性质有所了解。在一般的情况下,为了保证高于折叠频率的分量不会出现,在采样之前,先用低通模拟滤波器对信号进行滤波。 (2)泄漏现象
实际中的信号序列往往很长,甚至是无限长序列。为了方便,往往用截短的序列来近似它们。这样可以使用较短的DFT来对信号进行频谱分析。这种截短等价于给原信号序列乘以一个矩形窗函数。而矩形窗函数的频谱不是有限带宽的,从而它和原信号的频谱进行卷积以后会扩展原信号的频谱。值得一提的是,泄漏是不能和混淆完全分离开的,因为泄露导致频谱的扩展,从而造成混淆。为了减小泄漏的影响,可以选择适当的窗函数使频谱的扩散减到最小。 (3)栅栏效应
=X(z)|z=W-k=e,W是z平面单位圆上幅角为w=因为DFT是对单位圆上z变换的均匀采样,所以它不可能将频谱视为一个连续函数,这样就产生了栅栏效应。减小栅栏效应的一个方法是在源序列的末端补一些零值,从而变动DFT的点数。这种方法的实质是认为地改变了对真实频谱采样的点数和位置,相当于搬动了“栅栏”的位置,从而使得原来被挡住的一些频谱的峰点或谷点显露出来。注意,这时候每根谱线多对应的频率和原来的已经不相同了。
从上面的分析过程可以看出,DFT可以用于信号的频谱分析,但必须注意可能产生的误差,在应用过程中要尽可能减小和消除这些误差的影响。 ③
快速傅立叶变换FFT并不是与DFT不相同的另一种变换,而是为了减少DFT运算次数的一种快速算法。它是对变换式(2-7)进行一次次的分解,使其成为若干小点数DFT的组合,从而减小运算量。常用的FFT是以2为基数,其长度错误!未找到引用源。。它的运算效率高,程序比较简单,使用也十分地方便。当需要进行变换的序列的长度不是2的整数次方的时候,为了使用以2为基的FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。IFFT一般可以通过FFT程序来完成,比较式(2-7)和(2-8),只要对X(k)取共轭,进行FFT运算,然后再取共轭,并乘以因子1/N,就可以完成IFFT。
三、实验步骤
(一)编制实验用主程序及相应子程序
1、在实验之前,认真复习DFT和FFT有关的知识,阅读本实验原理与方法和实验附录部分中和本实验有关的子程序,掌握子程序的原理并学习调用方法。
2、编制信号产生子程序及本实验的频掊分析主程序。实验中需要用到的基本信号包括:
(n-p)2ì-??eq,0#?xa(n)=í0,othersn?(1)高斯序列: ???????
15
(2)衰减正弦序列: ??b
x(n)={e-ansin2pfn,0#n150,others
(3)三角波序列: ????
xc(n)={n+1,0#n48-n,4#n7
(4)反三角序列: ????
xd(n)={4-n,0#n3n-3,4#n7
四、实验内容及结果分析:
1、观察高斯序列的时域和频域特性
①固定信号中的参数p=8,改变q的值,使q分别等于2,4,8。观察它们的时域和幅频特性,了解q取不同值的时候,对信号时域特性和幅频特性的影响。②固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列时域及幅频特性的影响。注意p等于多少时,会发生明显的泄漏现象,混淆现象是否也随之出现?记录实验中观察到的现象,绘制相应的时域序列和幅频特性曲线。
结果分析:
①固定p=8时,结果的时域特性:
在时域上,p=8表明最大值1在p=8处取得,q值越大,序列以p为中心衰减速度就越慢。序列的形状就越平缓。
幅频特性:
上图表明频域的情况恰好相反,p值越大,频谱的带宽就越小,波形越陡峭。 ②当固定q=8时,高斯序列的时域特性: