DFT
2023年11月18日
 #elecEngeneer
文章目录
- DFT
- 1. 离散傅里叶变换-DFT
- 2. 离散傅里叶反变换-IDFT
- 3. DFT的误差
- 下链
 
1. 离散傅里叶变换-DFT
离散傅里叶变换(Discrete Fourier Transform,DFT),是当有  
     
      
       
       
         N 
        
       
      
        {N} 
       
      
    N 个信号采样点,且采样间隔为  
     
      
       
       
         T 
        
       
      
        {T} 
       
      
    T 时候的傅里叶变换。
 实际信号不可能无限长,所以采样点只有有限个。
 傅里叶变换中,离散与周期相对应。有限个离散采样点做傅里叶变换(即DTFT,离散时间傅里叶变换)得到的是连续且有周期性(周期为  
     
      
       
       
         2 
        
       
         π 
        
       
      
        {2\pi} 
       
      
    2π )的频谱。
 如果我们把已有的采样点不断重复,就得到了时域上离散且有周期性的函数,这样傅里叶变换的频谱也是离散且有周期性的。
 这种将已有采样点延拓成周期信号做傅里叶变换的方法即为DFT。
 
 时域中的一个周期与频域中的一个周期相对应。时域中一个周期包含所有采样点。
 显然,DFT时域与频域一个周期中离散点的个数是有限的,于是可以用计算机进行运算。
 设有连续信号  
     
      
       
       
         f 
        
       
         ( 
        
       
         t 
        
       
         ) 
        
       
      
        {f(t)} 
       
      
    f(t) ,和  
     
      
       
       
         N 
        
       
      
        {N} 
       
      
    N 个采样点  
     
      
       
       
         f 
        
       
         [ 
        
       
         0 
        
       
         ] 
        
       
         , 
        
       
         f 
        
       
         [ 
        
       
         1 
        
       
         ] 
        
       
         , 
        
       
         f 
        
       
         [ 
        
       
         2 
        
       
         ] 
        
       
         , 
        
       
         ⋯ 
         
       
         , 
        
       
         f 
        
       
         [ 
        
       
         N 
        
       
         − 
        
       
         1 
        
       
         ] 
        
       
      
        {f[0],f[1],f[2], \cdots ,f[N-1]} 
       
      
    f[0],f[1],f[2],⋯,f[N−1] ,连续信号的傅里叶变换为:
  
      
       
        
        
          F 
         
        
          ( 
         
        
          j 
         
        
          ω 
         
        
          ) 
         
         
          
           
           
             = 
            
           
          
             FT  
           
          
         
         
         
           ∫ 
          
          
          
            − 
           
          
            ∞ 
           
          
         
           ∞ 
          
         
        
          f 
         
        
          ( 
         
        
          t 
         
        
          ) 
         
         
         
           e 
          
          
          
            − 
           
          
            j 
           
          
            ω 
           
          
            t 
           
          
         
        
          d 
         
        
          t 
         
        
       
         F(j \omega ) \stackrel{\text{ FT }}{=} \int_{ -\infty }^{ \infty } f(t) e^{-j \omega t} \mathrm dt 
        
       
     F(jω)= FT ∫−∞∞f(t)e−jωtdt
 我们认为每个采样点  
     
      
       
       
         f 
        
       
         [ 
        
       
         n 
        
       
         ] 
        
       
      
        {f[n]} 
       
      
    f[n] 都是一个冲激函数,相加得到采样后的  
     
      
       
       
         f 
        
       
         ( 
        
       
         t 
        
       
         ) 
        
       
      
        {f(t)} 
       
      
    f(t) ,将采样后的  
     
      
       
       
         f 
        
       
         ( 
        
       
         t 
        
       
         ) 
        
       
      
        {f(t)} 
       
      
    f(t) 代入上式就得到了DTFT的公式,积分仅在冲激函数处存在:
  
      
       
        
         
          
           
            
            
              F 
             
            
              ( 
             
            
              j 
             
            
              ω 
             
            
              ) 
             
             
              
               
               
                 = 
                
               
              
                 DTFT  
               
              
             
            
           
          
          
           
            
             
             
             
               ∫ 
              
             
               0 
              
              
              
                ( 
               
              
                N 
               
              
                − 
               
              
                1 
               
              
                ) 
               
              
                T 
               
              
             
            
              f 
             
            
              ( 
             
            
              t 
             
            
              ) 
             
             
             
               e 
              
              
              
                − 
               
              
                j 
               
              
                ω 
               
              
                t 
               
              
             
            
              d 
             
            
              t 
               
            
              , 
               
            
              t 
             
            
              = 
             
            
              n 
             
            
              T 
             
            
           
          
         
         
          
           
            
           
          
         
         
          
           
           
             = 
            
           
          
          
           
            
             
            
              f 
             
            
              [ 
             
            
              0 
             
            
              ] 
             
             
             
               e 
              
              
              
                − 
               
              
                j 
               
              
                0 
               
              
             
            
              + 
             
            
              f 
             
            
              [ 
             
            
              1 
             
            
              ] 
             
             
             
               e 
              
              
              
                − 
               
              
                j 
               
              
                ω 
               
              
                T 
               
              
             
            
              + 
             
            
              f 
             
            
              [ 
             
            
              2 
             
            
              ] 
             
             
             
               e 
              
              
              
                − 
               
              
                j 
               
              
                ω 
               
              
                2 
               
              
                T 
               
              
             
            
              + 
             
            
              ⋯ 
             
            
              + 
             
            
              f 
             
            
              [ 
             
            
              N 
             
            
              − 
             
            
              1 
             
            
              ] 
             
             
             
               e 
              
              
              
                − 
               
              
                j 
               
              
                ω 
               
              
                ( 
               
              
                N 
               
              
                − 
               
              
                1 
               
              
                ) 
               
              
                T 
               
              
             
            
           
          
         
         
          
           
            
           
          
         
         
          
           
           
             = 
            
           
          
          
           
            
             
             
             
               ∑ 
              
              
              
                n 
               
              
                = 
               
              
                0 
               
              
              
              
                N 
               
              
                − 
               
              
                1 
               
              
             
            
              f 
             
            
              [ 
             
            
              n 
             
            
              ] 
             
             
             
               e 
              
              
              
                − 
               
              
                j 
               
              
                ω 
               
              
                n 
               
              
                T 
               
              
             
            
           
          
         
        
       
         \begin{align*} F(j \omega ) \stackrel{\text{ DTFT }}{=} & \int_{ 0 }^{ (N-1)T } f(t) e^{-j \omega t} \mathrm dt \,\,,\,\, t=nT \\ \\ =&f[0] e^{-j0}+f[1]e^{-j \omega T}+f[2]e^{-j \omega 2T}+ \cdots +f[N-1]e^{-j \omega (N-1)T} \\ \\ =& \sum_{n=0}^{ N-1} f[n]e^{-j \omega nT} \end{align*} 
        
       
     F(jω)= DTFT ==∫0(N−1)Tf(t)e−jωtdt,t=nTf[0]e−j0+f[1]e−jωT+f[2]e−jω2T+⋯+f[N−1]e−jω(N−1)Tn=0∑N−1f[n]e−jωnT
 DTFT的频谱是连续的,我们将时域的离散信号延拓成周期离散信号,可以得到离散且有周期性的频谱。
 由于频谱有周期性,我们只观察离散频谱的第一个周期,其中离散点为:
  
      
       
        
        
          ω 
         
        
          = 
         
        
          0 
         
        
          , 
         
         
          
          
            2 
           
          
            π 
           
          
          
          
            N 
           
          
            T 
           
          
         
        
          , 
         
         
          
          
            2 
           
          
            π 
           
          
          
          
            N 
           
          
            T 
           
          
         
        
          × 
         
        
          2 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
         
          
          
            2 
           
          
            π 
           
          
          
          
            N 
           
          
            T 
           
          
         
        
          × 
         
        
          k 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
         
          
          
            2 
           
          
            π 
           
          
          
          
            N 
           
          
            T 
           
          
         
        
          × 
         
        
          ( 
         
        
          N 
         
        
          − 
         
        
          1 
         
        
          ) 
         
        
       
         \omega =0 , \frac{2\pi}{NT} , \frac{2\pi}{NT}\times 2 , \cdots , \frac{2\pi}{NT} \times k , \cdots , \frac{2\pi}{NT}\times (N-1) 
        
       
     ω=0,NT2π,NT2π×2,⋯,NT2π×k,⋯,NT2π×(N−1)
 于是我们得到DFT的公式:
  
      
       
        
        
          F 
         
        
          [ 
         
        
          k 
         
        
          ] 
         
         
          
           
           
             = 
            
           
          
             DFT  
           
          
         
         
         
           ∑ 
          
          
          
            n 
           
          
            = 
           
          
            0 
           
          
          
          
            N 
           
          
            − 
           
          
            1 
           
          
         
        
          f 
         
        
          [ 
         
        
          n 
         
        
          ] 
         
         
         
           e 
          
          
          
            − 
           
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            k 
           
          
            n 
           
          
           
        
          , 
           
        
          k 
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          1 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
        
          N 
         
        
          − 
         
        
          1 
         
        
       
         F[k] \stackrel{\text{ DFT }}{=} \sum_{n=0}^{ N-1} f[n]e^{-j \frac{\large 2\pi}{\large N} kn} \,\,,\,\, k=0,1, \cdots ,N-1 
        
       
     F[k]= DFT n=0∑N−1f[n]e−jN2πkn,k=0,1,⋯,N−1
  
     
      
       
       
         N 
        
       
         − 
        
       
         1 
        
       
      
        {N-1} 
       
      
    N−1 个离散采样点  
     
      
       
       
         f 
        
       
         [ 
        
       
         n 
        
       
         ] 
        
       
      
        {f[n]} 
       
      
    f[n] ,通过DFT可以得到  
     
      
       
       
         N 
        
       
         − 
        
       
         1 
        
       
      
        {N-1} 
       
      
    N−1 个离散点构成的频谱  
     
      
       
       
         F 
        
       
         [ 
        
       
         k 
        
       
         ] 
        
       
      
        {F[k]} 
       
      
    F[k] 。如果令
  
      
       
        
        
          W 
         
        
          = 
         
         
         
           e 
          
          
          
            − 
           
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
         
        
       
         W=e^{-j\frac{\large 2\pi}{\large N}} 
        
       
     W=e−jN2π
 则有:
  
      
       
        
        
          F 
         
        
          [ 
         
        
          k 
         
        
          ] 
         
         
          
           
           
             = 
            
           
          
             DFT  
           
          
         
         
         
           ∑ 
          
          
          
            n 
           
          
            = 
           
          
            0 
           
          
          
          
            N 
           
          
            − 
           
          
            1 
           
          
         
        
          f 
         
        
          [ 
         
        
          n 
         
        
          ] 
         
         
         
           W 
          
          
          
            k 
           
          
            n 
           
          
           
        
          , 
           
        
          k 
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          1 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
        
          N 
         
        
          − 
         
        
          1 
         
        
       
         F[k] \stackrel{\text{ DFT }}{=} \sum_{n=0}^{ N-1} f[n]W^{ kn} \,\,,\,\, k=0,1, \cdots ,N-1 
        
       
     F[k]= DFT n=0∑N−1f[n]Wkn,k=0,1,⋯,N−1
  
      
       
        
         
         
           W 
          
          
          
            N 
           
          
            n 
           
          
         
        
          = 
         
         
         
           e 
          
          
          
            − 
           
          
            j 
           
          
            2 
           
          
            n 
           
          
            π 
           
          
         
        
          = 
         
        
          cos 
         
        
           
         
        
          ( 
         
        
          − 
         
        
          2 
         
        
          n 
         
        
          π 
         
        
          ) 
         
        
          + 
         
        
          j 
         
        
          sin 
         
        
           
         
        
          ( 
         
        
          − 
         
        
          2 
         
        
          n 
         
        
          π 
         
        
          ) 
         
        
          = 
         
        
          1 
           
        
          , 
           
        
          n 
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          1 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
        
          N 
         
        
          − 
         
        
          1 
         
        
       
         W^{Nn}=e^{-j2n\pi}=\cos(-2n\pi)+j\sin(-2n\pi)=1 \,\,,\,\, n=0,1, \cdots ,N-1 
        
       
     WNn=e−j2nπ=cos(−2nπ)+jsin(−2nπ)=1,n=0,1,⋯,N−1
 DTF可以写成矩阵形式:
  
      
       
        
         
         
           [ 
          
          
           
            
             
              
              
                F 
               
              
                [ 
               
              
                0 
               
              
                ] 
               
              
             
            
           
           
            
             
              
              
                F 
               
              
                [ 
               
              
                1 
               
              
                ] 
               
              
             
            
           
           
            
             
              
              
                F 
               
              
                [ 
               
              
                2 
               
              
                ] 
               
              
             
            
           
           
            
             
              
              
                ⋮ 
               
               
                
               
              
             
            
           
           
            
             
              
              
                F 
               
              
                [ 
               
              
                k 
               
              
                ] 
               
              
             
            
           
           
            
             
              
              
                ⋮ 
               
               
                
               
              
             
            
           
           
            
             
              
              
                F 
               
              
                [ 
               
              
                N 
               
              
                − 
               
              
                1 
               
              
                ] 
               
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
            
             
             
               1 
              
             
            
            
             
             
               ⋯ 
              
             
            
            
             
             
               1 
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
             
               W 
              
             
            
            
             
              
              
                W 
               
              
                2 
               
              
             
            
            
             
              
              
                W 
               
              
                3 
               
              
             
            
            
             
             
               ⋯ 
              
             
            
            
             
              
              
                W 
               
               
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
              
              
                W 
               
              
                2 
               
              
             
            
            
             
              
              
                W 
               
              
                4 
               
              
             
            
            
             
              
              
                W 
               
              
                6 
               
              
             
            
            
             
             
               ⋯ 
              
             
            
            
             
              
              
                W 
               
               
               
                 2 
                
               
                 ( 
                
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
                 ) 
                
               
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
              
              
                W 
               
              
                3 
               
              
             
            
            
             
              
              
                W 
               
              
                6 
               
              
             
            
            
             
              
              
                W 
               
              
                9 
               
              
             
            
            
             
             
               ⋯ 
              
             
            
            
             
              
              
                W 
               
               
               
                 3 
                
               
                 ( 
                
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
                 ) 
                
               
              
             
            
           
           
            
             
              
              
                ⋮ 
               
               
                
               
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
              
              
                W 
               
              
                k 
               
              
             
            
            
             
              
              
                W 
               
               
               
                 2 
                
               
                 k 
                
               
              
             
            
            
             
              
              
                W 
               
               
               
                 3 
                
               
                 k 
                
               
              
             
            
            
             
             
               ⋯ 
              
             
            
            
             
              
              
                W 
               
               
               
                 k 
                
               
                 ( 
                
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
                 ) 
                
               
              
             
            
           
           
            
             
              
              
                ⋮ 
               
               
                
               
              
             
            
           
           
            
             
             
               1 
              
             
            
            
             
              
              
                W 
               
               
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
              
             
            
            
             
              
              
                W 
               
               
               
                 2 
                
               
                 ( 
                
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
                 ) 
                
               
              
             
            
            
             
              
              
                W 
               
               
               
                 3 
                
               
                 ( 
                
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
                 ) 
                
               
              
             
            
            
             
             
               ⋯ 
              
             
            
            
             
              
              
                W 
               
               
               
                 ( 
                
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
                 ) 
                
               
                 ( 
                
               
                 N 
                
               
                 − 
                
               
                 1 
                
               
                 ) 
                
               
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                [ 
               
              
                0 
               
              
                ] 
               
              
             
            
           
           
            
             
              
              
                f 
               
              
                [ 
               
              
                1 
               
              
                ] 
               
              
             
            
           
           
            
             
              
              
                f 
               
              
                [ 
               
              
                2 
               
              
                ] 
               
              
             
            
           
           
            
             
              
              
                ⋮ 
               
               
                
               
              
             
            
           
           
            
             
              
              
                f 
               
              
                [ 
               
              
                n 
               
              
                ] 
               
              
             
            
           
           
            
             
              
              
                ⋮ 
               
               
                
               
              
             
            
           
           
            
             
              
              
                f 
               
              
                [ 
               
              
                N 
               
              
                − 
               
              
                1 
               
              
                ] 
               
              
             
            
           
          
         
           ] 
          
         
        
       
         \begin{bmatrix} F[0]\\ F[1]\\ F[2]\\ \vdots \\ F[k]\\ \vdots \\ F[N-1] \end{bmatrix}= \begin{bmatrix} 1&1&1&1& \cdots &1\\ 1&W&W^2&W^3& \cdots & W^{N-1}\\ 1&W^2&W^4&W^6& \cdots & W^{2(N-1)}\\ 1&W^3&W^6&W^9& \cdots & W^{3(N-1)}\\ \vdots \\ 1&W^{k}&W^{2k}&W^{3k}& \cdots & W^{k(N-1)}\\ \vdots \\ 1&W^{N-1}&W^{2(N-1)}&W^{3(N-1)}& \cdots & W^{(N-1)(N-1)}\\ \end{bmatrix} \begin{bmatrix} f[0]\\ f[1]\\ f[2]\\ \vdots \\ f[n]\\ \vdots \\ f[N-1] \end{bmatrix} 
        
       
      
              F[0]F[1]F[2]⋮F[k]⋮F[N−1] 
              = 
              1111⋮1⋮11WW2W3WkWN−11W2W4W6W2kW2(N−1)1W3W6W9W3kW3(N−1)⋯⋯⋯⋯⋯⋯1WN−1W2(N−1)W3(N−1)Wk(N−1)W(N−1)(N−1) 
               
              f[0]f[1]f[2]⋮f[n]⋮f[N−1] 
              
[!example]-
对 f ( t ) = 5 + 2 cos  ( 2 π t − 90 ° ) + 3 cos  ( 4 π t ) {f(t)=5+2\cos(2\pi t-90°)+3\cos(4\pi t)} f(t)=5+2cos(2πt−90°)+3cos(4πt)
设有4个离散的采样点,采样间隔 0.25 s {0.25s} 0.25s ,采样周期正好为 1 s {1s} 1s
f [ 0 ] = 8 , f [ 1 ] = 4 , f [ 2 ] = 8 , f [ 3 ] = 0 , N = 4 f[0]=8,f[1]=4,f[2]=8,f[3]=0 \,\,,\,\, N=4 f[0]=8,f[1]=4,f[2]=8,f[3]=0,N=4
则DTF矩阵可以写成:
[ F [ 0 ] F [ 1 ] F [ 2 ] F [ 3 ] ] = [ 1 1 1 1 1 − j − 1 j 1 − 1 1 − 1 1 j − 1 − j ] [ f [ 0 ] f [ 1 ] f [ 2 ] f [ 3 ] ] = [ 20 − 4 j 12 4 j ] \begin{bmatrix} F[0]\\F[1]\\F[2]\\F[3] \end{bmatrix}= \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -j & -1 & j \\ 1 & -1 & 1 & -1\\ 1 & j & -1 & -j \end{bmatrix} \begin{bmatrix} f[0]\\f[1]\\f[2]\\f[3] \end{bmatrix}= \begin{bmatrix} 20\\-4j\\12\\4j \end{bmatrix} F[0]F[1]F[2]F[3] = 11111−j−1j1−11−11j−1−j  f[0]f[1]f[2]f[3] = 20−4j124j 
频谱取幅值,我们可以得到4个离散的频谱
∣ F [ 0 ] ∣ = 20 , ∣ F [ 1 ] ∣ = 4 , ∣ F [ 2 ] ∣ = 12 , ∣ F [ 3 ] ∣ = 4 |F[0]|=20,|F[1]|=4,|F[2]|=12,|F[3]|=4 ∣F[0]∣=20,∣F[1]∣=4,∣F[2]∣=12,∣F[3]∣=4
2. 离散傅里叶反变换-IDFT
对DFT
  
      
       
        
        
          F 
         
        
          [ 
         
        
          k 
         
        
          ] 
         
         
          
           
           
             = 
            
           
          
             DFT  
           
          
         
         
         
           ∑ 
          
          
          
            n 
           
          
            = 
           
          
            0 
           
          
          
          
            N 
           
          
            − 
           
          
            1 
           
          
         
        
          f 
         
        
          [ 
         
        
          n 
         
        
          ] 
         
         
         
           e 
          
          
          
            − 
           
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            k 
           
          
            n 
           
          
           
        
          , 
           
        
          k 
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          1 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
        
          N 
         
        
          − 
         
        
          1 
         
        
       
         F[k] \stackrel{\text{ DFT }}{=} \sum_{n=0}^{ N-1} f[n]e^{-j \frac{\large 2\pi}{\large N} kn} \,\,,\,\, k=0,1, \cdots ,N-1 
        
       
     F[k]= DFT n=0∑N−1f[n]e−jN2πkn,k=0,1,⋯,N−1
 其反变换(Inverse Discrete Fourier Transform)为:
  
      
       
        
        
          f 
         
        
          [ 
         
        
          n 
         
        
          ] 
         
         
          
           
           
             = 
            
           
          
             IDFT  
           
          
         
         
         
           1 
          
         
           N 
          
         
         
         
           ∑ 
          
          
          
            k 
           
          
            = 
           
          
            0 
           
          
          
          
            N 
           
          
            − 
           
          
            1 
           
          
         
        
          F 
         
        
          [ 
         
        
          k 
         
        
          ] 
         
         
         
           e 
          
          
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            k 
           
          
            n 
           
          
           
        
          , 
           
        
          n 
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          1 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
        
          N 
         
        
          − 
         
        
          1 
         
        
       
         f[n] \stackrel{\text{ IDFT }}{=} \frac{1}{N} \sum_{k=0}^{ N-1}F[k]e^{j\frac{\large 2\pi}{\large N} kn} \,\,,\,\, n=0,1, \cdots ,N-1 
        
       
     f[n]= IDFT N1k=0∑N−1F[k]ejN2πkn,n=0,1,⋯,N−1
 DFT的输出为复数,IDFT的输出为实数。由于
- DTFT的幅度频谱的周期为 2 π {2\pi} 2π,且实数信号的频谱共轭对称(幅度为偶函数)
- DTFT的连续频谱为DFT离散频谱的包络线
所以DFT在第一个周期内的频谱(  
     
      
       
       
         [ 
        
       
         0 
        
       
         , 
        
       
         2 
        
       
         π 
        
       
         ] 
        
       
      
        {[0,2\pi]} 
       
      
    [0,2π] 内的离散点)关于  
     
      
       
       
         N 
        
       
         / 
        
       
         2 
        
       
      
        {N/2} 
       
      
    N/2 共轭对称。
 对于基频比较大的离散信号点组,按理说其频谱应该是有一个幅度较大的基频,还有一些幅度较小的谐波分量。但由于DFT的结果关于  
     
      
       
       
         N 
        
       
         / 
        
       
         2 
        
       
      
        {N/2} 
       
      
    N/2 共轭对称,会有另一个跟基频幅值一样的角频率在第一个频谱周期中出现。显然将第一个频谱周期当作DFT的结果是不合理的,对于第一个频谱周期,从  
     
      
       
       
         N 
        
       
         / 
        
       
         2 
        
       
      
        {N/2} 
       
      
    N/2 往后的离散点都属于“混叠频率”,只有  
      
       
        
        
          0 
         
        
       
         {0} 
        
       
     0 到  
      
       
        
        
          N 
         
        
          / 
         
        
          2 
         
        
       
         {N/2} 
        
       
     N/2 的离散点才会被考虑为合理的频谱。
 从IDFT的公式来看,共轭对称的离散频谱  
     
      
       
       
         F 
        
       
         [ 
        
       
         k 
        
       
         ] 
        
       
      
        {F[k]} 
       
      
    F[k] 与  
     
      
       
       
         F 
        
       
         [ 
        
       
         N 
        
       
         − 
        
       
         k 
        
       
         ] 
        
       
      
        {F[N-k]} 
       
      
    F[N−k] 对信号点  
     
      
       
       
         f 
        
       
         [ 
        
       
         n 
        
       
         ] 
        
       
      
        {f[n]} 
       
      
    f[n] 的贡献为:
  
      
       
        
         
         
           f 
          
         
           k 
          
         
        
          [ 
         
        
          n 
         
        
          ] 
         
        
          = 
         
         
         
           1 
          
         
           N 
          
         
        
          { 
         
        
          F 
         
        
          [ 
         
        
          k 
         
        
          ] 
         
         
         
           e 
          
          
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            k 
           
          
            n 
           
          
         
        
          + 
         
        
          F 
         
        
          [ 
         
        
          N 
         
        
          − 
         
        
          k 
         
        
          ] 
         
         
         
           e 
          
          
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            ( 
           
          
            N 
           
          
            − 
           
          
            k 
           
          
            ) 
           
          
            n 
           
          
         
        
          } 
         
        
       
         f_k[n]= \frac{1}{N} \lbrace F[k]e^{j\frac{\large 2\pi}{\large N} kn}+F[N-k]e^{j\frac{\large 2\pi}{\large N} (N-k)n} \rbrace 
        
       
     fk[n]=N1{F[k]ejN2πkn+F[N−k]ejN2π(N−k)n}
 由于
  
      
       
        
        
          F 
         
        
          [ 
         
        
          N 
         
        
          − 
         
        
          k 
         
        
          ] 
         
        
          = 
         
         
         
           ∑ 
          
          
          
            k 
           
          
            = 
           
          
            0 
           
          
          
          
            N 
           
          
            − 
           
          
            1 
           
          
         
        
          f 
         
        
          [ 
         
        
          n 
         
        
          ] 
         
         
         
           e 
          
          
          
            − 
           
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            ( 
           
          
            N 
           
          
            − 
           
          
            k 
           
          
            ) 
           
          
            n 
           
          
         
        
       
         F[N-k]= \sum_{k=0}^{ N-1}f[n]e^{-j\frac{\large 2\pi}{\large N} (N-k)n} 
        
       
     F[N−k]=k=0∑N−1f[n]e−jN2π(N−k)n
  
      
       
        
         
         
           e 
          
          
          
            − 
           
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            ( 
           
          
            N 
           
          
            − 
           
          
            k 
           
          
            ) 
           
          
            n 
           
          
         
        
          = 
         
         
         
           e 
          
          
          
            − 
           
          
            j 
           
          
            2 
           
          
            π 
           
          
            n 
           
          
         
         
         
           e 
          
          
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            k 
           
          
            n 
           
          
         
        
          = 
         
         
         
           e 
          
          
          
            j 
           
           
            
            
              2 
             
            
              π 
             
            
            
            
              N 
             
            
           
          
            k 
           
          
            n 
           
          
         
        
       
         e^{-j\frac{\large 2\pi}{\large N} (N-k)n}=e^{-j2\pi n}e^{j\frac{\large 2\pi}{\large N} kn}=e^{j\frac{\large 2\pi}{\large N} kn} 
        
       
     e−jN2π(N−k)n=e−j2πnejN2πkn=ejN2πkn
 所以  
     
      
       
       
         F 
        
       
         [ 
        
       
         N 
        
       
         − 
        
       
         k 
        
       
         ] 
        
       
      
        {F[N-k]} 
       
      
    F[N−k] 为  
     
      
       
       
         F 
        
       
         [ 
        
       
         k 
        
       
         ] 
        
       
      
        {F[k]} 
       
      
    F[k] 的共轭转置,记为
  
      
       
        
        
          F 
         
        
          [ 
         
        
          N 
         
        
          − 
         
        
          k 
         
        
          ] 
         
        
          = 
         
         
         
           F 
          
         
           ∗ 
          
         
        
          [ 
         
        
          k 
         
        
          ] 
         
        
       
         F[N-k]=F ^{*} [k] 
        
       
     F[N−k]=F∗[k]
 所以
  
      
       
        
         
          
           
            
             
             
               f 
              
             
               k 
              
             
            
              [ 
             
            
              n 
             
            
              ] 
             
            
              = 
             
            
           
          
          
           
            
             
             
             
               1 
              
             
               N 
              
             
            
              { 
             
            
              F 
             
            
              [ 
             
            
              k 
             
            
              ] 
             
             
             
               e 
              
              
              
                j 
               
               
                
                
                  2 
                 
                
                  π 
                 
                
                
                
                  N 
                 
                
               
              
                k 
               
              
                n 
               
              
             
            
              + 
             
             
             
               F 
              
             
               ∗ 
              
             
            
              [ 
             
            
              k 
             
            
              ] 
             
             
             
               e 
              
              
              
                j 
               
               
                
                
                  2 
                 
                
                  π 
                 
                
                
                
                  N 
                 
                
               
              
                ( 
               
              
                N 
               
              
                − 
               
              
                k 
               
              
                ) 
               
              
                n 
               
              
             
            
              } 
               
            
              , 
               
             
             
               e 
              
              
              
                j 
               
              
                2 
               
              
                π 
               
              
                n 
               
              
             
            
              = 
             
            
              1 
             
            
           
          
         
         
          
           
            
           
          
         
         
          
           
           
             = 
            
           
          
          
           
            
             
             
             
               2 
              
             
               N 
              
             
            
              { 
             
            
              ℜ 
             
            
              [ 
             
            
              F 
             
            
              [ 
             
            
              k 
             
            
              ] 
             
            
              ] 
             
            
              cos 
             
            
               
             
            
              ( 
             
             
              
              
                2 
               
              
                π 
               
              
             
               N 
              
             
            
              k 
             
            
              n 
             
            
              ) 
             
            
              − 
             
            
              ℑ 
             
            
              [ 
             
            
              F 
             
            
              [ 
             
            
              k 
             
            
              ] 
             
            
              ] 
             
            
              sin 
             
            
               
             
            
              ( 
             
             
              
              
                2 
               
              
                π 
               
              
             
               N 
              
             
            
              k 
             
            
              n 
             
            
              ) 
             
            
              } 
             
            
           
          
         
         
          
           
            
           
          
         
         
          
           
           
             = 
            
           
          
          
           
            
             
             
             
               2 
              
             
               N 
              
             
            
              ∣ 
             
            
              F 
             
            
              [ 
             
            
              k 
             
            
              ] 
             
            
              ∣ 
             
            
              cos 
             
            
               
             
            
              ( 
             
            
              ( 
             
             
              
              
                2 
               
              
                π 
               
              
              
              
                N 
               
              
                T 
               
              
             
            
              k 
             
            
              ) 
             
            
              n 
             
            
              T 
             
            
              + 
             
            
              arg 
             
            
               
             
            
              ( 
             
            
              F 
             
            
              [ 
             
            
              k 
             
            
              ] 
             
            
              ) 
             
            
              ) 
             
            
           
          
         
        
       
         \begin{align*} f_k[n]=& \frac{1}{N} \lbrace F[k]e^{j\frac{\large 2\pi}{\large N} kn}+F ^{*} [k]e^{j\frac{\large 2\pi}{\large N} (N-k)n} \rbrace \,\,,\,\, e^{j2\pi n}=1 \\ \\ =& \frac{2}{N} \lbrace \Re [F[k]] \cos(\frac{2\pi}{N}kn)-\Im [ F [k]]\sin(\frac{2\pi}{N}kn) \rbrace \\ \\ =& \frac{2}{N} |F[k]| \cos \bigg( (\frac{2\pi}{NT}k)nT +\arg(F[k]) \bigg) \end{align*} 
        
       
     fk[n]===N1{F[k]ejN2πkn+F∗[k]ejN2π(N−k)n},ej2πn=1N2{ℜ[F[k]]cos(N2πkn)−ℑ[F[k]]sin(N2πkn)}N2∣F[k]∣cos((NT2πk)nT+arg(F[k]))
 相当于采样之后的一个角频率为  
     
      
       
       
         2 
        
       
         π 
        
       
         k 
        
       
         / 
        
       
         N 
        
       
         T 
        
       
      
        {2\pi k/NT} 
       
      
    2πk/NT ,幅值为  
     
      
       
       
         2 
        
       
         ∣ 
        
       
         F 
        
       
         [ 
        
       
         k 
        
       
         ] 
        
       
         ∣ 
        
       
         / 
        
       
         N 
        
       
      
        {2|F[k]|/N} 
       
      
    2∣F[k]∣/N 的正弦波,在连续时间下即为  
     
      
       
       
         k 
        
       
      
        {k} 
       
      
    k 次谐波。
 DFT的有效频谱频率范围在  
     
      
       
       
         [ 
        
       
         0 
        
       
         , 
        
       
         π 
        
       
         ] 
        
       
      
        {[0,\pi]} 
       
      
    [0,π] ,即DFT输出的各次谐波频率为
  
      
       
        
        
          ω 
         
        
          = 
         
        
          0 
         
        
          , 
         
         
          
          
            2 
           
          
            π 
           
          
          
          
            N 
           
          
            T 
           
          
         
        
          , 
         
         
          
          
            2 
           
          
            π 
           
          
          
          
            N 
           
          
            T 
           
          
         
        
          × 
         
        
          2 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
         
          
          
            2 
           
          
            π 
           
          
          
          
            N 
           
          
            T 
           
          
         
        
          × 
         
        
          k 
         
        
          , 
         
        
          ⋯ 
          
        
          , 
         
         
          
          
            2 
           
          
            π 
           
          
          
          
            N 
           
          
            T 
           
          
         
        
          × 
         
         
         
           N 
          
         
           2 
          
         
        
       
         \omega =0 , \frac{2\pi}{NT} , \frac{2\pi}{NT}\times 2 , \cdots , \frac{2\pi}{NT} \times k , \cdots , \frac{2\pi}{NT}\times \frac{N}{2} 
        
       
     ω=0,NT2π,NT2π×2,⋯,NT2π×k,⋯,NT2π×2N
 真实的谐波频率为
  
      
       
        
         
         
           ω 
          
          
          
            r 
           
          
            e 
           
          
            a 
           
          
            l 
           
          
         
        
          = 
         
        
          ω 
         
        
          ⋅ 
         
         
         
           N 
          
          
          
            T 
           
          
            p 
           
          
         
        
       
         \omega _{real}= \omega \cdot \frac{N}{T_p} 
        
       
     ωreal=ω⋅TpN
  
     
      
       
        
        
          T 
         
        
          p 
         
        
       
      
        {T_p} 
       
      
    Tp 为时间序列的真实周期时间。 
     
      
       
       
         N 
        
       
      
        {N} 
       
      
    N 越大,DFT能输出的有效频率范围也越大。
 仍以前面举出的例子为例
[!example]-
- F [ 0 ] = 20 {F[0]=20} F[0]=20 表示直流分量为 F [ 0 ] / N = 20 / 4 = 5 {F[0]/N=20/4=5} F[0]/N=20/4=5
- F [ 1 ] = − 4 j = F ∗ [ 3 ] {F[1]=-4j=F ^{*} [3]} F[1]=−4j=F∗[3] 表示采样的基频幅值为 2 ∣ F [ 1 ] ∣ / N = 2 {2|F[1]|/N=2} 2∣F[1]∣/N=2 ,相位 − 90 ° {-90°} −90°
2 cos  ( 2 π N T n T − 90 ° ) = 2 cos  ( π 2 n − 90 ° ) 2\cos(\frac{2\pi}{NT}nT-90°)=2\cos(\frac{\pi}{2}n-90°) 2cos(NT2πnT−90°)=2cos(2πn−90°)- F [ 2 ] = 12 {F[2]=12} F[2]=12 表示采样的二次频谐波如下
f 2 [ n ] = 1 N F [ 2 ] e j 2 π N 2 n = 3 cos  ( π n ) f_2[n]= \frac{1}{N}F[2]e^{j\frac{\large 2\pi}{\large N}2n}=3\cos(\pi n) f2[n]=N1F[2]ejN2π2n=3cos(πn)
在实际应用中, N {N} N 必须大于 4 {4} 4 。 对 N = 1024 {N=1024} N=1024 ,会有 1024 {1024} 1024 个离散频率点, F [ k ] {F[k]} F[k] 有 1024 {1024} 1024 个,但第 513 {513} 513 到第 1023 {1023} 1023 个点是 511 {511} 511 到第 1 {1} 1 个采样点的共轭转置, F [ 0 ] / 1024 {F[0]/1024} F[0]/1024 是直流分量, 2 ∣ F [ 1 ] ∣ / 1024 {2|F[1]|/1024} 2∣F[1]∣/1024 到 2 ∣ F [ 511 ] ∣ / 1024 {2|F[511]|/1024} 2∣F[511]∣/1024 是交流分量的幅值, 1 ∣ F [ 512 ] ∣ / 1024 {1|F[512]|/1024} 1∣F[512]∣/1024 是一个cosine-only的分量的幅值,且在最高分辨频率点 ( k = N / 2 {k=N/2} k=N/2)上。
3. DFT的误差
DFT在已有的采样点上能够多大程度近似傅里叶变换?显然DFT只是一个近似,因为它只提供了有限个频率点。但这些离散频率点有多正确?
 DFT有两种误差,混叠(aliasing)与“泄漏(leakage)”。
 混叠之前说过了,如果采样点过少(采样间隔太大),最高分辨频率点就会过小,会出现混叠。解决的方法是增加采样率,或者提前对信号进行滤波,去掉高次谐波。网上还说了一种方法就是补上一段值为  
     
      
       
       
         0 
        
       
      
        {0} 
       
      
    0 的信号,也相当于增加了采样点。
 泄漏,或者说拖尾效应,就是在做DFT时候时域信号并不是某个周期信号的整数倍,比如如果输入信号是正弦信号的  
     
      
       
       
         1.25 
        
       
      
        {1.25} 
       
      
    1.25 个周期,那在对DFT时候实际上是将  
     
      
       
       
         1.25 
        
       
      
        {1.25} 
       
      
    1.25 个周期的正弦信号做为DFT的信号周期,这样延拓出的周期信号就有很大的不连续性,会导致频谱存在谐波。如图
 
 解决方案是使用我们在设计FIR滤波器时遇到的窗口函数之一(例如Hamming或Hanning窗口)。这些窗函数使采样信号在两个端点处逐渐变细为零值,因此与假设的下一个周期不存在不连续性(在Hanning窗的情况下,不存在非常小的不连续性)。泄漏的现象也会减小。
下链
【数字信号处理】FFT




















