用離散傅利葉變換實現線性卷積

2021-09-07 07:50:45 字數 1288 閱讀 4435

兩個長度為n的序列的線性卷積的長度為2n-1;

兩個長度為n的序列的週期卷積的週期為n。

如果我們將兩個長度為n的序列做dft、相乘、idft,得到的是這兩個序列的週期卷積。

週期卷積的結果可看做線性卷積移位rn個點後的線性疊加(r為整數,-∞因此,如果將這兩個序列補零到長度為2n-1,那麼就不會發生時域混疊,週期卷積的乙個週期就等於這兩個序列的線性卷積。

根據以上內容,可以設計出兩種用離散傅利葉變換實現線性卷積的方法:

1. 重疊相加法

我們知道,卷積是線性運算,因此可以將輸入x[n]拆分為許多長度為l的子串行,與長度為p的h[n](用離散傅利葉變換)做(週期)卷積,然後將卷積結果移位疊加。當然,dft的長度至少為l+p-1,x[n]和h[n]都補零到這個長度,以使得週期卷積的乙個週期等於線性卷積。各次卷積結果相互間隔l重疊相加得到結果。

x[n]的第乙個子串行與h[n]卷積結果所在區間為[0, l+p-2];    // 長度l+p-1

x[n]的第二個子串行與h[n]卷積結果所在區間為[l, 2l+p-2];  // 與第乙個序列的重疊部分為[l, l+p-2],重疊部分長度p-1

2. 重疊保留法

同樣將輸入序列拆分為長度為l的子串行。和重疊相加法不同,這種方法保留下迴圈卷積結果中和線性卷積相同的部分,丟棄不同的部分,然後將輸出序列補在一起。因此,在拆分x[n]的時候是「重疊」拆分的。取l>p,dft長度為l,線性卷積長度應為l+p-1,但週期卷積長度只有l,這可以看做將線性卷積尾巴上的p-1個點「迴繞」到頭部做疊加,因此(用離散傅利葉變換)做卷積後的開頭p-1個點是不正確的,將其丟棄。剩下的l-p+1個點是正確的。這種方法必須取l>p,否則週期卷積的所有點都不等於線性卷積。

x[n]的第乙個子串行為x[0, l-1];

x[n]的第二個子串行為x[l-(p-1), 2l-p];

更詳細理論參考奧本海默,《離散時間訊號處理》。

example 1

設h[n]長度p為500。

使用重疊相加法,dft長度取為1024,於是輸入資料長度l必須滿足l+p-1<=1024,l<=525。取l=512。

將l和p都補零到1024,每次卷積結果長度就是dft長度1024,每次重疊相加部分長度512。

example 2

設h[n]長度p為500。

使用重疊保留法,輸入資料長度l和dft長度相同,必須大於p,取為1024。h[n]補零到1024。

每次dft長度1024,丟棄點數需大於p-1即499。為了方便,卷積後丟棄前面512點,保留後512點。

每次取輸入資料時,將上一次運算時的512點和新的512點拼成1024點。

離散傅利葉變換 快速傅利葉變換C 實現

傅利葉變換是將時域訊號變換為頻域訊號的一種方式,我主要用它來做兩件事情 1 求一段資料的週期性。2 通過傅利葉變換及其逆變換,進行低通濾波 去躁 首先需要做幾點說明 1.快速傅利葉變換是離散傅利葉變換的快速演算法,當資料來源較大時 大於1000 快速傅利葉變換有明顯優勢。2.快速傅利葉變換的訊號源長...

離散傅利葉變換

傅利葉 原理表明 任何連續測量的時序或 訊號,都可以表示為不同頻率的正弦波 訊號的無限疊加。而根據該 原理創立的傅利葉變換演算法利用直接測量到的原始 訊號,以累加方式來計算該 訊號中不同正弦波 訊號的頻率 振幅和相位。岡薩雷斯版 影象處理 裡面的解釋非常形象 乙個恰當的比喻是將傅利葉變換比作乙個玻璃...

離散傅利葉變換

作用 離散傅利葉變換主要是將連續的訊號轉換為離散的訊號。如在時域上連續的有時在頻域上是離散的。然而我們知道,任何的乙個函式都可以由無數個正弦函式和余弦函式相結合的形式來表示。即 如果將乙個影象進行離散傅利葉變換,就是將影象從空間域轉換到頻域上。其中f是空間域的值,f是頻域的值。轉換後的頻域值是複數。...