格策爾演算法把離散傅立葉轉換看成是一組濾波器,將輸入的訊號與濾波器中的脈衝響應做卷積運算,求得濾波器的輸出,即得到頻率域其中一點的頻率
。此演算法利用旋轉因子
的週期性,將離散傅立葉轉換轉換為線性的濾波運算。
因為旋轉因子
 | | 1 |
可得轉換後第k點的頻率為
 | | 2 |
定義
為
 | | 3.A |
可將
理解為由兩個訊號的卷積運算得出的結果
 | | 3.B |
其中
式輸入的N點訊號,另外一個
則被看作是IIR濾波器的脈衝頻率響應
 | | 4 |
對比(2)和(3)式,可推知(3.A)進行卷積運算,當n=N時,濾波器的輸出
即為
:
 | | 5 |
對(4)進行Z轉換,可得一階IIR轉移函數
 | | 6 |
圖一為此系統的流程圖,其對應的差分方程式為:
 | | 7 |
圖一、格策爾一階濾波器系統示意圖
依照此差分方程進行疊代運算,疊代到
時即可依據(5)式得到
。而依照轉移函數(6)式進行運算時,可以先將旋轉因子
儲存起來,每次疊代包含一次複數乘法,則按照(1)式計算N點離散傅立葉轉換時則需要
次實數乘法運算和
次加/減法[6],加/減法與乘法運算皆為
次,當N不大時運算效率不佳,若改為接下來改進的的格策爾演算法(二階),所需的實數乘法次數約為原本的一半。
將式(6)上下同乘以
,可得第k點的頻率響應轉移函數為
| | 8 |
圖二、格策爾二階濾波器系統圖
此轉移函數所對應的系統流程圖如圖二所示,複數分析(8)式,可得知此二階濾波器有一對共軛的極點與一個零點。圖二中在計算
的轉換結果
時,會有兩個步驟:
- 共軛極點疊代計算 依序將輸入訊號
放入濾波器做疊代運算,共作N次疊代,計算量是
次實數乘法與
次實數加/減法
- 零點疊代計算 輸入訊號
是N點的訊號從
。加入
的邊界條件,可以按照圖二的流程圖計算出
,此即為所求的
離散傅立葉轉換
,此步驟的計算量為4次實數乘法與4次實數加/減法。
綜合以上步驟,總共的計算量為
次實數乘法運算以及
次實數加法運算,而使用此計算演算法只需儲存
與
兩個參數[7]。