循環卷積
針對的是兩個長度都爲N的序列,對兩個序列做FFT,然後再做IFFT得到的結果就是循環卷積,結果的長度也是N。
直接計算步驟:
序列A與序列B,長度都是N,新的序列C
1、把B倒過來。[翻轉]
2、把B向右平移一個元素。最右側的元素補到左邊。
3、計算此時A和B對應元素的積的和。將其加到C的末尾。
4、如果C中還不足N個元素,重複步驟2和3。
線性卷積
針對的是兩個長度爲L和M的序列,將兩個序列都補0pad到N,做FFT,再做IFFT。得到的結果長度爲L+M-1
直接計算步驟:
序列A與序列B,長度分別數L和M,都補0到N,新的序列C
1、把B倒過來。[翻轉]
2、將B翻轉之後的數組第一位與A的第一位對齊
3、計算此時A和B對應元素的積的和。
4、將B數組向右移動一位,繼續計算。
5、直到B數組與A數組沒有重疊爲止。
兩者的關係:
如果想要計算循環卷積,可以將線性卷積進行週期化,然後計算。
如果想要計算線性卷積,可以將循環卷積pad0,進行計算。
【1】https://www.zhihu.com/question/25525824
【2】https://wenku.baidu.com/view/829dd3ce541810a6f524ccbff121dd36a32dc4e9
【3】bluestein算法 https://blog.csdn.net/outer_form/article/details/52386685