㈠ 兩個長度為3的序列計算長度為4的圓周卷積怎麼計算
x1=[1 0 -1 2],長度L1=4
x2=[2 0 0 0 1],長度L2=5
首先是線性卷積,很簡單,本質就是多項式乘法,結果是:
[2 0 -2 4 1 0 -1 2]
線性卷積的長度是L1+L2-1,此處就是8,要求7點圓周卷積,就是把上面結果的最後一位拿下來加到前面第一位,就是:
[4 0 -1 4 1 0 -1]
若要N點線性卷積等於圓周卷積,只有N大於等於線性卷積的長度,這樣就不必截下尾巴再添加到頭上了。
所以就是N>=L1+L2-1,
即N>=8
(1)圓周卷積計算方法例題擴展閱讀;
演算法
離散信號的圓周卷積可以經由圓周卷積定理使用快速傅立葉變換(FFT)而有效率的計算。因此,若原本的(線性)卷積能轉換成圓周卷積來計算,會遠比直接計算更快速。
考慮到長度L 和長度 M 的有限長度離散信號,做卷積之後會成為長度的信號,因此只要把兩離散信號補上適當數目的零(zero-padding)成為N點信號,其中 ,則它們的圓周卷積就與卷積相等。即可接著用N點 FFT 作計算。
用以上方法計算卷積時,若兩個信號長度相差很多,則較短者須補上相當多的零,太不經濟。而且在某些情況下,例如較短的h[n] 是一個 FIR 濾波器而較長的x[n] 是未知長度的輸入(像語音)時,直接用以上方法要等所有的輸入都收到後才能開始算輸出信號,太不方便。
這時可以把x[n] 分割成許多適當長度的區塊(稱為 block convolution),然後一段一段的處理。經過濾波後的段落再仔細的連接起來,藉由輸入或輸出的重疊來處理區塊連接的部份。這兩種做法分別稱為重疊-儲存之卷積法和重疊-相加之卷積法。