圖示兩個方形脈衝波的卷積。其中函數 "g" 首先對 反射,接着平移 "t" ,成爲 。那麼重疊部份的面積就至關於 "t" 處的卷積,其中橫座標表明待積變量 以及新函數 的自變量 "t" 。php
圖示方形脈衝波和指數衰退的脈衝波的卷積(後者可能出現於 RC電路中),一樣地重疊部份面積就至關於 "t" 處的卷積。注意到由於 "g" 是對稱的,因此在這兩張圖中,反射並不會改變它的形狀。html
在泛函分析中,卷積(捲積)、旋積或摺積,是經過兩個函數f 和g 生成第三個函數的一種數學算子,表徵函數f 與通過翻轉和平移的g 的重疊部分的累積。若是將參加卷積的一個函數看做區間的指示函數,卷積還能夠被看做是「滑動平均」的推廣。git
卷積是分析數學中一種重要的運算。設: ,是上的兩個可積函數,做積分:算法
能夠證實,關於幾乎全部的 ,上述積分是存在的。這樣,隨着 的不一樣取值,這個積分就定義了一個新函數,稱爲函數 與 的卷積,記爲。咱們能夠輕易驗證:,而且 仍爲可積函數。這就是說,把卷積代替乘法, 空間是一個代數,甚至是巴拿赫代數。api
卷積與傅里葉變換有着密切的關係。例如兩函數的傅里葉變換的乘積等於它們卷積後的傅里葉變換,利用此一性質,能簡化傅里葉分析中的許多問題。app
由卷積獲得的函數 通常要比 和 都光滑。特別當 爲具備緊支集的光滑函數, 爲局部可積時,它們的卷積 也是光滑函數。利用這一性質,對於任意的可積函數 ,均可以簡單地構造出一列逼近於 的光滑函數列 ,這種方法稱爲函數的光滑化或正則化。dom
卷積的概念還能夠推廣到數列、測度以及廣義函數上去。svg
函數f 與g 的卷積記做,它是其中一個函數翻轉並平移後與另外一個函數的乘積的積分,是一個對平移量的函數。函數
積分區間取決於f 與g 的定義域。spa
對於定義在離散域的函數,卷積定義爲
圖解卷積
若是f(t)是一個單位脈衝,咱們獲得的乘積就是g(t)自己,稱爲衝激響應 。
當 爲有限長度 , 爲有限長度 的信號,計算卷積 有三種主要的方法,分別爲 1.直接計算(Direct Method) 2.快速傅里葉轉換(FFT) 和 3.分段卷積 (sectioned convolution)。方法1是直接利用定義來計算卷積,而方法2和3都是用到了FFT來快速計算卷積。也有不須要用到FFT的做法,如使用數論轉換。
,
。
分段卷積: Overlap-Add
欲作的分段卷積分, 長度爲 , 長度爲 ,
Step 1: 將每 分紅一段
Step 2: 再每段 點後面添加 個零,變成長度
Step 3: 把 添加 個零,變成長度 的 h'[n]}
Step 4: 把每一個 x[n]} 的小段和 h'[n]} 作快速卷積,也就是 IDFT_{L+M-1}\{{DFT_{L+M-1}(x[n])DFT_{L+M-1}(h'[n])}\}},每小段會獲得長度 的時域信號
Step 5: 放置第 i} 個小段的起點在位置 L\times i} 上, i=0,1,...,\lceil {\frac {N}{L}}\rceil -1}
Step 6: 會發如今每一段的後面 M-1} 點有重疊,將全部點都相加起來,顧名思義 Overlap-Add,最後獲得結果
舉例來講:
x[n]=[1,2,3,4,5,-1,-2,-3,-4,-5,1,2,3,4,5]}, 長度 N=15}
h[n]=[1,2,3]}, 長度 M=3}
令 L=5}
令 L=5} 切成三段,分別爲 x_{0}[n],x_{1}[n],x_{2}[n]}, 每段填 M-1} 個零,並將 填零至長度
將每一段作 IDFT_{L+M-1}\{{DFT_{L+M-1}(x[n])DFT_{L+M-1}(h'[n])}\}}
若將每小段擺在一塊兒,能夠注意到第一段的範圍是 0\thicksim 6} ,第二段的範圍是 5\thicksim 11},第三段的範圍是 10\thicksim 16},三段的範圍是有重疊的
最後將三小段加在一塊兒,並將結果和未分段的卷積作比較,上圖是分段的結果,下圖是沒有分段並利用快速卷積所算出的結果,驗證二者運算結果相同。
分段卷積: Overlap-Save
欲作 x[n]*h[n]}的分段卷積分, x[n]} 長度爲 N}, 長度爲 M},
Step 1: 將 x[n]} 前面填 M-1} 個零
Step 2: 第一段 i=0}, 重新的 中 取到 總共 點當作一段,所以每小段會重複取到前一小段的 點,取到新的一段全爲零爲止
Step 3: 把 添加 L-M} 個零,變成長度 的
Step 4: 把每一個 的小段和 作快速卷積,也就是,每小段會獲得長度 的時域信號
Step 5: 對於每一個小段,只會保留末端的 點,所以得名 Overlap-Save
Step 6: 將全部保留的點合再一塊兒,獲得最後結果
舉例來講:
, 長度
, 長度
令
將 前面填 個零之後,按照 Step 2 的方式分段,能夠看到每一段都重複上一段的 點
再將每一段作之後能夠獲得
保留每一段末端的 點,擺在一塊兒之後,能夠注意到第一段的範圍是 ,第二段的範圍是,第三段的範圍是},第四段的範圍是,四段的範圍是沒有重疊的
將結果和未分段的卷積作比較,下圖是分段的結果,上圖是沒有分段並利用快速卷積所算出的結果,驗證二者運算結果相同。
至於爲何要把前面 M-1} 丟掉?
如下以一例子來闡述:
, 長度,
, 長度,
第一條藍線表明 軸,而兩條藍線之間表明長度,是在作快速卷積時的週期
當在作快速卷積時,是把信號視爲週期,在時域上爲循環卷積分,
而在一開始前 點所獲得的值,是 和 內積的值,
然而 這 個值應該要爲零,以往在作快速卷積時長度爲 時不會遇到這些問題,
而今天由於在作快速卷積時長度爲 纔會把這 點算進來,所以咱們要丟棄這 點內積的結果
爲了要丟棄這 M-1} 點內積的結果,位移 h[-n]} M-1} 點,並把位移之後內積合的值纔算有效。
以上三種方法皆可用來計算卷積,其差異在於所需整體乘法量不一樣。基於運算量以及效率的考量,在計算卷積時,一般會選擇所需整體乘法量較少的方法。
如下根據 和 的長度( )分紅5類,並列出適合使用的方法:
基本上,以上只是粗略的分類。在實際應用時,最好仍是算出三種方法所需的總乘法量,再選擇其中最有效率的方法來計算卷積。
Q1: 當 ,適合用哪一種方法計算卷積?
Ans:
Q2: 當 ,適合用哪一種方法計算卷積?
Ans:
Q3: 當 ,適合用哪一種方法計算卷積?
Ans:
按照翻轉、平移、積分的定義,還能夠相似的定義多元函數上的積分:
各類卷積算子都知足下列性質:
其中Df 表示f的微分,若是在離散域中則是指差分算子,包括前向差分與後向差分兩種:
卷積定理指出,函數卷積的傅里葉變換是函數傅里葉變換的乘積。即,一個域中的卷積至關於另外一個域中的乘積,例如時域中的卷積就對應於頻域中的乘積。
其中表示f 的傅里葉變換。
這必定理對拉普拉斯變換、雙邊拉普拉斯變換、Z變換、Mellin變換和Hartley變換(參見Mellin inversion theorem)等各類傅里葉變換的變體一樣成立。在調和分析中還能夠推廣到在局部緊緻的阿貝爾羣上定義的傅里葉變換。
利用卷積定理能夠簡化卷積的運算量。對於長度爲的序列,按照卷積的定義進行計算,須要作組對位乘法,其計算複雜度爲;而利用傅里葉變換將序列變換到頻域上後,只須要一組對位乘法,利用傅里葉變換的快速算法以後,總的計算複雜度爲。這一結果能夠在快速乘法計算中獲得應用。
若 G 是有某 m 測度的羣(例如豪斯多夫空間上哈爾測度下局部緊緻的拓撲羣),對於G 上 m-勒貝格可積的實數或複數函數f 和g,可定義它們的卷積:
對於這些羣上定義的卷積一樣能夠給出諸如卷積定理等性質,可是這須要對這些羣的表示理論以及調和分析的彼得-外爾定理。
卷積在工程和數學上都有不少應用: