環形摺積與線性摺積類似，皆是針對兩個函式的運運算元。假設兩個函式分別為 f 與 g，則摺積運算過程即為將其中一個函式 如 f 經過翻轉後，對於每個位移量，將重疊的部份相乘累加起來 見下文定義。不同的地方在於環形摺積的位移為環形位移，而線性摺積的位移為平移。摺積亦可以視為滑動平移的推廣。 定義 兩個函式的環形摺積定義為對一個或兩個函式做週期延伸後之摺積運算，而所謂的週期延伸是指原來的函式平移固定長度的整數倍再全部加起來所產生的新函式。 x t 經過週期延伸後之函式可寫成下式 x_T t stackrel mathrm def sum_kinftyinfty x t kT sum_kinftyinfty x t kT 其中 T 為週期 即週期延伸中的固定長度 對 x t 與 h t 計算環形摺積的運算 x t otimes h t 可以下列兩種等價表示式定義 begin align y t int_t_ot_oT h_T taucdot x_T t taudtau int_inftyinfty h taucdot x_T t taudtau quad stackrel mathrm def quad x_T t h t end align 其中 表示線性摺積運運算元 此兩定義的等價關係證明如下 begin align int_inftyinfty h taucdot x_T t taudtau sum_kinftyinfty left int_t_okTt_ok1 T h taucdot x_T t tau dtauright sum_kinftyinfty left int_t_ot_oT h taukTcdot x_T t taukT dtauright sum_kinftyinfty left int_t_ot_oT h taukTcdot x_T t tau dtauright int_t_ot_oT left sum_kinftyinfty h taukTcdot x_T t tauright dtau int_t_ot_oT left sum_kinftyinfty h taukTrightcdot x_T t tau dtau stackrel mathrm def int_t_ot_oT h_T taucdot x_T t tau dtau quad quad mbox QED end align 上述為針對兩個連續訊號 函式 的環形摺積之定義的說明，類似的，我們對於週期為 N 的離散訊號之環形摺積 x n otimes h n 有如下的定義 begin align x_N n h n stackrel mathrm def sum_minftyinfty h m cdot x_N nm sum_minftyinfty h m cdot sum_kinftyinfty x n m kN end align 離散訊號的環形摺積可以結合快速傅立葉變換與摺積理論做相當有效率的計算，然而，在實際上訊號處理或系統理論的應用，線性摺積運算較常被考慮也較有物理意義，於是，如果可將一個線性摺積的計算問題轉化為求算環形摺積，則一般當兩個輸入訊號長度相距不遠時，往往計算量可以大為減少，增加了計算線性摺積的效率，至於線性摺積與環形摺積的關係以及如何利用環形折積與傅立葉變換求得線性摺積結果，將於下文進一步討論。 線性摺積與環形摺積之比較 線性摺積 連續訊號線性摺積 f star gt int f tau g t tau dtau 離散訊號線性摺積 f star gm sum_n f n g m n 對於一個線性非時變 LTI 之系統，輸出的訊號 y n 可以經由輸入訊號 x n 與系統的脈衝響應 h n 的線性摺積而得。 也因此，在實際的應用上，線性摺積的運算較為具有物理意義，如數位濾波器的濾波過程即為一個線性摺積的運算。 環形摺積 環形摺積定義如前文所述，運算上是將線性摺積的頭尾相連變成環形，觀念上可想像為一個輸入在內環，另一個輸入在外環，然後每一個輸出的求得皆是經由內環與外環對應位置的乘加。計算下一個輸出則將內環固定不動，外環圓周位移一格，再做對應位置之乘加得到此輸出，以此類推。圓環上的點數即為週期延伸的週期 T 或 N 比較 不管是線性摺積或環形摺積均有反折、位移、相乘並求和的運算，但線性摺積的位移是平移，環形摺積的位移則是圓周位移。除此之外，線性摺積並不要求兩序列長度相等，若 x n 長度為 M，h n 長度為 N，則其摺積輸出 y n 長度為 MN1，而環形摺積則要求兩輸入序列等長 假設為 L，且摺積輸出的長度也為 L。一般情況下，兩等長序列的環形摺積與線性摺積的結果是不同的 因為環形週期序列產生的影響，但當 LMN1 時，兩者的結果相同。 右圖為一個實際範例，可比較相同的兩輸入訊號，線性摺積與環形摺積輸出的差異。 如何利用快速傅立葉變換計算線性摺積 由以上討論知道一般的情況，線性摺積與環形摺積的輸出結果並不會相同，且一般線性摺積較實用而有意義。然而離散訊號的處理上，由於環形摺積可以藉由快速傅立葉變換較有效率的求得，所以兩輸入訊號的線性摺積，如何利用環形摺積與快速傅立葉變換得到，在訊號處理及相關應用上是特別重要的。 我們根據摺積理論知道 y n x n star h n sum_k x nk h k y n IFFT FFT x n FFT h n 然而 FFT 的點數該如何選取呢？ 因為 FFT 與 IFFT 的點數皆要是一樣的，且特別要注意的一點是 y_1 n IFFT_L FFT_L x_1 n FFT_L h_1 n y_1 n sum_k 0N1 x nk_L h k 其中 FFTL 為 L 點 FFT；IFFTL 為 L 點 IFFT a L a 除以 L 的餘數 上式表示根據摺積理論與快速傅立葉變換，我們求得的是兩個輸入訊號的環形摺積而不是線性摺積 y n x n star h n sum_k x nk h k 依據兩個輸入訊號的長度，計算方法可分類如下 x n 與 h n 皆為無限長訊號 由於此種類在實際應用上相當少且較不實際，故在此不進一步討論 x n 與 h n 皆為有限長訊號 假設 x n 的範圍 n1n2，長度為 N n2n11；h n 的範圍為 k1k2，長度 K 為 k2k11 在這個情況下，x n 與 h n 的線性摺積為 y n sum_k k_1k_2 x nk h k 容易以圖解推得 y n 有值的範圍為 k1n1 k2n2，輸出長度為 k_2n_2k_1n_11 N K 1 輸出訊號長度比兩輸入訊號大 於是如欲以快速傅立葉變換計算線性摺積，則傅立葉變換之點數 M 要取 NK1，不足部份補零，實作方法如下： x_1 n x nn_1 n 012N1 x_1 n 0 n NN1N2M1 M N K 1 h_1 n h nk_1 n 012K1 h_1 n 0 n KK1K2M1 y_1 n IFFT_M FFT_M x_1 n FFT_M h_1 n y n y_1 nn_1k_1 nn_1k_1 012N1 x n 為無限長訊號，而 h n 為有限長訊號 由於摺積運算的對稱性，此種類與 x n 為有限長訊號，而 h n 為無限長訊號的情況完全相同。 假設 x n 的範圍 n1n2，長度為 N n2 n1 1，h n 長度為無限長。 在此情況下，摺積輸出 y n 每一點皆有值。但當我們只想求出 y n 的其中一段時，依然可利用快速傅立葉變換實作。 如果我們希望算出 y n 在範圍 m1m2 之間的值，此段長度為 M m2m11，此時可圖解發現，在 h n 中與我們關心的輸出範圍有關聯之 h n 範圍為 m1n2m2n1，需要使用的 FFT 點數為 L NM1 M 為輸出訊號關心的長度 實作方法如下 x_1 n x nn_1 n 012N1 x_1 n 0 n NN1N2L1 L N M 1 h_1 n h nm_1n_2 n 012L1 y_1 n IFFT_L FFT_L x_1 n FFT_L h_1 n y n y_1 nm_1N1 nm_1N1 N1NL 只選 y1 n 後面 M 個點 區塊摺積 當計算摺積之兩訊號長度相差很大時，利用快速傅立葉變換計算摺積是較沒有效率的，此時較有效率的方法是將較長的訊號切成一段段的區塊，以此每一區塊對另一輸入訊號進行摺積再合併，常見的區塊摺積方法包括重疊 相加之摺積法與重疊 儲存之摺積法，針對長度的不同，區塊長度的選取亦會影響計算的效率。 相關條目 摺積 離散傅立葉變換 區塊摺積 參考 JianJiun Ding Advanced digital signal processing class notethe Department of Electrical Engineering National Taiwan University NTU Taipei Taiwan 2007 H H H deZyklische Faltung