重疊相加法和重疊保留法的原理

2021-08-10 14:46:17 字數 1621 閱讀 2445

dft(fft)的乙個應用,就是計算線性卷積。設h

(n) 和x(

n)長度分別為

n 和

m,對於

l 點迴圈卷積,若滿足

l>=n+

m−1,則有yc

(n)=

yl(n

) 。

對於兩個序列長度相差很大的情況,例如

m>>

n ,為了節省儲存空間並實現實時處理,則需要採取將長序列分段的方法。因為可以通過求迴圈卷積來得到線性卷積,所以以下先討論迴圈卷積的情況。

仍然對於上述的h(

n)和x(n

) ,當

m>>

n 時,計算每乙個yc

(n) 最多隻需要

n 次(較短序列的長度)計算,即從x(

n−n+

1)~x

(n) 之間的

n 個值。所以即便將x(

n)分解也可以得到卷積結果。現將x

(n) 分解為許多長度為k(

k≥n)

的短序列x0

(n),

x1(n

),x2

(n).

..。例如對於x2

(n),

0≤n≤

k−1

當n−1

≤n≤k

−1時,求得y2

(n) 所需的x(

n−n+

1) ~x

(n) 之間的

n 個值可完全由x2

(n)提供,但是當0≤

n≤n−

2 時則無法只由x2

(n) 提供全部所需的x(

n),為了解決這個問題便提出了重疊相加法和重疊保留法。

重疊相加法

根據 y(n

)=h(

n)∗x

(n)=

h(n)

∗∑m=

0∞xk

(n)=

∑m=0

∞h(n

)∗xk

(n)=

∑m=0

∞yk(

n)對y

k(n)

求和即可得到原本的y(

n),其本質就是對不完全的yk

(n) 進行補全,而原本就滿足n−

1≤n≤

k−1 的yk

(n) 則實際上不改變其值。

重疊保留法

此方法需x(

n)分段時每兩段之間需要重疊n−

1 個值(實際上大於該值都可以,但取n−

1 時最節省運算量),然後對所求的yk

(n) 去除前n−

1 個點。本質就是直接刪去0≤

n≤n−

2 的yk

(n) ,只保留n−

1≤n≤

k−1 的yk

(n) ,因此在對分段時需要對x(

n)重疊分段,保證對於每個n都有滿足n−

1≤n≤

k−1 的xk

(n) 。

綜上,對於兩種方法,都是為了解決相同的問題,即x(

n)分段後每段內前n−

1 個yk

(n) 不完全的問題。

DFT計算線性卷積 重疊保留法

設h n 和x n 都是有限長序列,長度分別為n和m。它們的線性卷積和迴圈卷積分別表示如下 yc n h n x n m 0n 1h m x n m yl n h n x n m 0l 1 h m x n m l rl n 其中 l m ax n m x n l i x n il 只有當迴圈卷積長度...

捋一捋DSP裡的重疊保留法

相比於十分 直接 的重疊相加法,重疊保留法顯得有點繞。那些字母加來減去的,各段和總輸出的表示式讓人眼花繚亂。花了些力氣捋了捋清楚,記錄於斯。看字母太抽象太煩可以滑到後面例子對照理解。設h n 序列長m x n 總長l,分成長為n1的若干段,每段再把前一段末尾的m 1個點複製到本段開頭 首段開頭補零 ...

判斷平面上矩形和圓形的重疊

參考 知乎高讚回答 怎樣判斷平面上乙個矩形和乙個圓形是否有重疊?第一步 將矩形的中心平移至座標軸圓心處,同時圓也要同步變換。第二步 將圓變換置第一象限 第三步 計算 u vec u u,u v h vec u vec v vec h u v h 注 v vec v v表示由變換之後的矩形中心指向變換...