這個計算機能做什麼
循環卷積計算機(Circular Convolution Calculator)可計算兩組離散時間序列的循環(cyclic)卷積,這是數位訊號處理(DSP)中的核心運算之一。與線性卷積不同,循環卷積會將序列以固定週期 \(N\) 進行環繞折疊;當你把兩個訊號的離散傅立葉轉換(DFT)相乘再反轉換回時域時,得到的正是循環卷積的結果。輸入你的序列後,工具會立即回傳輸出序列,並一併顯示其最大值與最小值,方便你快速分析。
輸入欄位說明
- 第一組序列:你的輸入訊號 x,以逗號分隔的數字輸入(例如
1, 2, 3, 4)。 - 第二組序列:第二個訊號 h,同樣以逗號分隔(例如
1, 1, 1)。
若兩組序列長度不同,計算機會在較短的序列後方補零(zero-padding),直到長度等於 \(N\),也就是較長序列的長度。接著兩組序列都會被視為以 \(N\) 為週期的週期訊號。
計算公式
循環卷積的定義如下:
$$y[n] = \sum_{k=0}^{N-1} x[k] \cdot h\big[(n - k)\bmod N\big]$$與線性卷積最關鍵的差異,就在於索引的 mod N(取模 N)。當 \((n - k)\) 變成負數時,它不會產生 0,而是環繞回序列的尾端。這也是為什麼結果永遠恰好有 \(N\) 個取樣點,與較長的輸入序列等長。
實際範例
令 x = [1, 2, 3, 4]、h = [1, 1, 1, 1](兩者長度皆為 \(N = 4\))。逐項計算各輸出:
- \(y[0] = 1\cdot 1 + 2\cdot 1 + 3\cdot 1 + 4\cdot 1 = 10\)
- \(y[1] = 1\cdot 1 + 2\cdot 1 + 3\cdot 1 + 4\cdot 1 = 10\)
- \(y[2] = 10\),\(y[3] = 10\)
結果為 [10, 10, 10, 10],最大值與最小值皆為 10。由於 h 全部為 1,每個輸出都等於 x 的總和,這也是一個很好用的驗算技巧。
常見問題
它和線性卷積有什麼不同?線性卷積會產生長度為(len(x) + len(h) − 1)的序列,且沒有環繞折疊。循環卷積則把長度維持在 \(N\),並把超出的部分折回開頭,正好對應以 DFT 為基礎的濾波運算。
如果兩組序列長度不一樣怎麼辦?較短的序列會自動補零,直到與較長序列的長度 \(N\) 相同,這樣兩組序列在做卷積前就會對齊。
可以輸入負數或小數嗎?可以。輸入值會以小數方式解析,所以像 -1.5, 0.25, 3 這樣的數值都能正常運作。