1.3 离散傅里叶变换(DFT)举例
图1.3a表示任意一个数字信号xa(nT)。虽然信号xa(nT)是从n=-∞变化到+∞的(任何时域信号,包括模拟信号和数字信号,在时间上都是从t=-∞变化到t=+∞的),但实际上只能取它的一小部分,比如图1.3a中从xa(0)至xa(3T)的4个样点(这里的4个样点只是举例,DFT的实际样点数可以很大,比如32768个样点)。
有了这4个样点,就可以分析数字信号xa(nT)在t=0~3T区间内的频率组成。具体方法是,把这4个样点向两侧周期性地无限延伸,以得到一个时间上从-∞变化到+∞的数字信号x(nT),如图1.3b所示。现在的任务也就变成了对图1.3b中的周期信号x(nT)计算频率组成。
由于x(nT)是周期信号,就可以展开为傅里叶级数[此时的x(nT)可看作是连续时域信号,并假设在t=nT以外所有时间点上的幅度处处为零]。而傅里叶级数中每一项的系数X(k)表示信号x(nT)中包含的频率分量。根据傅里叶级数展开的计算规则,系数X(k)可计算为
对于式(1.2),暂时不必关心计算细节(后面的第12章将具体说明)。只需知道,从式(1.2)可以算出从X(0)~X(3)的4个傅里叶级数的系数。在具体计算时,先令k=0,由于e-jnkπ/2=e0=1,所以X(0)=x(0)+x(T)+x(2T)+x(3T)。这实际上是在计算x(nT)的直流分量(还应除以4,这在后面第12章说明)。然后令k=1,就可算得X(1)=x(0)×e0+x(T)×e-jπ/2+x(2T)×e-jπ+x(3T)×e-j3π/2。再令k=2,3,就可分别算得X(2)和X(3)。这就得到了数字信号x(nT)的4个频率分量X(0)、X(1)、X(2)和X(3)。这4个频率分量就是图1.3a中从x(0)~x(3T)的4个样点序列的离散傅里叶变换,可以用来估算信号xa(nT)在t=0~3T时间区间内的频率组成。
图1.3 用数字信号中的部分样点组成周期信号
a)数字信号xa(nT) b)周期信号x(nT)
根据式(1.2)的计算方法,可以画出相应的DFT计算图,如图1.4a所示。图中,当k=0时,只需把x(0)~x(3T)加起来,就得到X(0)。当k=1时,需将x(0)~x(3T)分别与1、e-jπ/2、e-jπ、e-j3π/2相乘,然后把它们加起来,就得到X(1)。当k=2(或3)时,需将x(0)~x(3T)分别与1、e-jπ/2、e-jπ、e-j3π/2的平方(或立方)相乘,再把乘积项加起来就得到X(2)[或X(3)]。对于图1.4a中DFT计算图的正确性,可以用图1.4b和c中的两个信号序列来测试。下面来说明。
图1.4b左边的x1(n)是一个直流信号。用图1.4a中的结构算出的结果为X1(0)=4和X1(1)=X1(2)=X1(3)=0,如图1.4b右边所示。这表示输入信号中只有直流分量,其他频率分量都为零。这当然是对的。
图1.4c左边的x2(n)是一个频率等于fS/4的零相位余弦信号。由于信号频率为采样率fS的1/4,所以每个信号周期内被采得4个样点,如图1.4c左边所示。用图1.4a中的结构算出的结果为X2(1)=X2(3)=2.0和X2(0)=X2(2)=0,如图1.4c右边所示。这表示输入信号中只有频率为fS/4的分量,其他频率分量都为零。这当然也是对的。这就完成了用信号序列x1(n)和x2(n)对图1.4a中DFT计算图的验证[在图1.4c的右边,fS为采样率,X2(1)和X2(3)都表示频率等于fS/4的分量,而且两者是同一个频率分量,X(0)表示直流分量,X(2)表示位于fS/2的频率分量。后面第3章将详细说明这些概念]。
图1.4a中计算图的要点是,图中的大多数乘法计算都是重复的(样点数越多越明显)。利用这一特点,可以使计算量大为节省,这就是所谓的快速傅里叶变换(Fast Fourier Transform,FFT)。此外,图1.4b和图1.4c中右侧的频率谱应该看成是以采样率fS为周期向两侧无限重复的,这是数字信号处理中最基本的概念。或者说,任何一个数字信号的频率谱都是以采样率fS为周期而向两侧无限重复的。
图1.4 有限长信号序列的DFT
a)DFT计算图 b)输入为直流信号 c)输入为零相位余弦信号
小测试:复指数e-jπ/2、e-jπ和e(2-j3π/2)的模各是多少?答:前两个是1,后一个是e2≈7.3。