#! https://zhuanlan.zhihu.com/p/656904738

离散傅里叶级数与离散傅里叶变换

离散傅里叶级数(DFS)

离散傅里叶级数指的是任何周期序列都可以由谐波相关的复指数序列的加权和组成。

X~[k]=n=0N1x~[n]ej2πNkn

  • x~[n]是周期为N的离散时间信号,即x~[n]=x~[n+N]

  • 跟连续时间周期信号的傅里叶级数中无限项谐波相关复指数函数的加权和不同,这里是有限项的加权和;

  • X~[k]x~[n]的离散傅里叶级数,其周期同样是N

  • 时域是离散的、周期的,频域也是离散的,周期的。

定义WN=ej2πN,则离散傅里叶级数可以写成:

X~[k]=n=0N1x~[n]WNkn

离散傅里叶级数的反变换为:

x~[n]=1Nk=0N1X~[k]WNkn

周期序列的时域和其离散傅里叶级数如下图所示:

周期序列的时域和其离散傅里叶级数

离散傅里叶级数的性质

x~[n]X~[k]x~1[n]+bx~2[n]aX~1[k]+bX~2[k]x~[nm]WNkmX~[k]WNlnx~[n]X~[kl]X~[n]Nx~[k]m=0N1x~[m]x~[nm]X~1[k]X~2[k]x~1[n]x~2[n]1NX~1[k]X~2[k]x~[n]X~[k]x~[n]X~[k]Re{x~[n]}X~e[k]=12(X~[k]+X~[k])jIm{x~[n]}X~o[k]=12(X~[k]X~[k])x~e[n]=12(x~[n]+x~[n])Re{X~[k]}x~o[n]=12(x~[n]x~[n])jIm{X~[k]}x~[n]X~[k]X~[k]=X~[Nk]Re{X~[k]}=Re{X~[k]}Im{X~[k]}=Im{X~[k]}|X~[k]|=|X~[k]|X~[k]=X~[k]x~[n]Re{X~[k]}x~[n]jIm{X~[k]}

离散傅里叶变换(DFT)

离散傅里叶变换是将有限长的离散时间序列转换为离散频率序列的变换。通过取周期序列的一个周期,可以将离散傅里叶级数转换为离散傅里叶变换。

X~[k]RN[k]=n=0N1x~[n]WNknRN[k]

X[k]=n=0N1x[n]ej2πNkn,k=0,1,,N1

  • RN[k]是矩形序列,其定义为:RN[k]={1,if  0k<N0,otherwise

  • x[n]是周期序列x~[n](也可以表示为x((n))N)的一个周期,即x[n]=x~[n]0nN1

  • X[k]是频域上周期序列X~[k](也可以表示为X((k))N)的一个周期,即X[k]=X~[k]0kN1

  • 有限长序列在做离散傅里叶变换时,隐含了“周期性”,也就是说我们需要将有限长序列看成是周期序列的一个周期。离散傅里叶变换的各种性质也是由离散傅里叶级数的性质推导出来的。

有限长序列的时域和其离散傅里叶变换如下图所示:

有限长序列的时域和其离散傅里叶变换

从离散傅里叶级数和离散傅里叶变换的图中可以看出,有限长离散时间信号的傅里叶变换的时域是周期序列取了其中的第一个周期,我们也称之为主值区间,其频域也是周期序列的频域取了其主值区间。

离散傅里叶变换的性质

NNx[n]X[k]x1[n]+bx2[n]aX1[k]+bX2[k]x((nm))NRN(n)WNkmX[k]WNlnx[n]X((kl))NRN(k)X[n]Nx[Nk]m=0N1x[m]x((nm))NRN[n]X1[k]X2[k]x1[n]x2[n]1Nl=0NX1[l]X2((kl))NRN[k]x[n]X[Nk]x((n))NRN[n]X[k]Re{x[n]}Xe[k]=12(X[k]+X((k))N)RN[k]jIm{x[n]}Xo[k]=12(X[k]X((k))N)RN[k]xe[n]=12(x[n]+x((n))N)RN[n]Re{X[k]}xo[n]=12(x[n]x((n))N)RN[n]jIm{X[k]}x[n]X[k]X[k]=X[Nk]Re{X[k]}=Re{X[Nk]}Im{X[k]}=Im{X[Nk]}|X[k]|=|X[Nk]|X[k]=X[Nk]x[n]Re{X[k]}x[n]jIm{X[k]}

特殊的应用

  • 在做DFT的时候,通常时域上的输入是实数序列,也就是说x[n]是实数序列,其频域输出|X[k]|=|X[Nk]|,X[k]=X[Nk]。因此,我们只需要计算0kN/2的数据,这些数据包括了0kN/2的数据和N/2+1kN1的数据。这样做的好处是减少了一半的计算量,同时也减少了一半的存储空间。

  • 利用共轭对称性,可以用一次DFT运算来计算两个实数序列的DFT,因而可以减少计算量。

x1[n]x2[n]为N点的实数序列,其DFT分别为X1[k]X2[k],则:

先用这两个实数序列组成一个复数序列x[n]=x1[n]+jx2[n],求其DFT为X[k],然后利用共轭对称性,可以得到:

X1[k]=DFT{Re{x[n]}}=12(X[k]+X[Nk])
X2[k]=DFT{Im{x[n]}}=12j(X[k]X[Nk])