在泛函分析中，摺積（convolution），或譯為疊積、褶 積或旋積，是透過兩個函式 f 和 g 生成第三個函式的一種數學運算元，表徵函式 f 與經過翻轉和平移的 g 的乘積函式所圍成的曲邊梯形的面積。如果將參加卷積的一個函式看作區間的指示函式，卷積還可以被看作是 滑動平均 的推廣。 定義 卷積是數學分析中一種重要的運算。設： f t 和 g t 是實數 mathbb R 上的兩個可積函式，定義二者的卷積 f gt 為如下特定形式的積分變換： f gt triangleq int_inftyinfty f tau g t tau mathrm dtau f gt 仍為可積函式，並且有著： f gt triangleq int_inftyinfty f t tau g tau dtau g ft 函式 f 和 g，如果只支撐在 0 infty 之上，則積分界限可以截斷為： f gt int_0t f tau g t tau dtau quad 對於 f g 0 infty to mathbb R 對於兩個得出複數值的，可以定義二者的卷積為如下形式的多重積分： begin align f gt_1t_2cdotst_n triangleq intintcdotsint_Realsn f tau_1tau_2cdotstau_n g t_1 tau_1t_2 tau_2cdotst_n tau_n dtau_1 dtau_2 cdots dtau_n triangleq int_Realsn f tau g ttaudntau end align 卷積有一個通用的工程上的符號約定： f t g t triangleq underbrace int_inftyinfty f tau g t tau dtau_f gt 它必須被謹慎解釋以避免混淆。例如：f t g t t_0 等價於 fg t t_0 ，而 f t t_0g t t_0 卻實際上等價於 fgt 2 t_0。 歷史 卷積運算的最早使用出現在達朗貝爾於 1754 年出版的《宇宙體系的幾個要點研究》中對泰勒定理的推導之中 DominguezTorres p 2。還有，將 int f ucdot g x u du 型別的表示式，用在他的 1797 年1800 年出版的著作《微分與級數論文》中 on page 505 of his book entitled Treatise on differences and series which is the last of 3 volumes of the encyclopedic series Traité du calcul différentiel et du calcul intégral Chez Courcier Paris 17971800 DominguezTorres p 4。此後不久，卷積運算出現在皮埃爾 西蒙拉普拉斯、約瑟夫傅立葉和西梅翁泊松等人的著作中。這個運算以前有時叫做 Faltung（德語中的摺疊）、合成乘積、疊加積分或卡森積分 。 卷積 這個術語早在 1903 年就出現了，然而其定義在早期使用中是相當生僻的 ，直到 1950 年代或 1960 年代之前都未曾廣泛使用。 簡介 如果 f 和 g 都是在 Lp 空間 L1 Realsn 內的勒貝格可積函式，則二者的卷積存在，並且在這種情況下 f g 也是可積的。這是託內利定理的結論。對於在 L1 中的函式在離散卷積下，或更一般的對於在任何群的上的卷積，這也是成立的。同樣的，如果 f in L1 Realsn 而 g in Lp Realsn，這裡的 1 le p le infty，則 f g in Lp Realsn，並且其 Lp 範數間有著不等式： f g_ple f_1g_p 在 p1 的特殊情況下，這顯示出 L1 是在卷積下的巴拿赫代數（並且如果 f 和 g 幾乎處處非負則兩邊間等式成立）。 卷積與傅立葉變換有著密切的關係。例如兩函式的傅立葉變換的乘積等於它們卷積後的傅立葉變換，利用此一性質，能簡化傅立葉分析中的許多問題。 由卷積得到的函式 fg，一般要比 f 和 g 都光滑。特別當 g 為具有緊支集的光滑函式，f 為區域性可積時，它們的卷積 f g 也是光滑函式。利用這一性質，對於任意的可積函式 f，都可以簡單地構造出一列逼近於 f 的光滑函式列 f_s，這種方法稱為函式的光滑化或正則化。 函式 f t 和 g t 的互相關 f star gtau，等價於 f tau 的共軛複數 overline f tau 與 g tau 的卷積： f star gtau triangleq int_inftyinfty overline f ttau g tdt overline f tau g tau 這裡的 tau 叫做移位（displacement）或滯後（lag）。 對於單位脈衝函式 delta t 和某個函式 h t，二者得到的摺積就是 h t 本身，此 h t 被稱為衝激響應： delta ht int_inftyinfty delta tau h t tau dtau h t 在連續時間線性非時變系統中，輸出訊號 y t 被描述為輸入訊號 x t 與衝激響應 h t 的卷積： y t x ht triangleq intlimits_inftyinfty x t taucdot h tau mathrm dtau intlimits_inftyinfty x taucdot h t tau mathrm dtau 兩個獨立的隨機變數 U 和 V，每個都有一個機率密度函式，二者之和的機率密度，是它們單獨的密度函式的卷積： f_UVx int_inftyinfty f_U y f_V x ydy left f_U f_V right x 圖解 已知右側第一行圖中兩個函式 f t 和 g t。 首先將兩個函式都用約束變數 tau 來表示，並將 g tau 翻轉至縱軸另一側，從而得到右側第二行圖中 f tau 和 g tau。 向函式 g tau 增加一個時間偏移量 t，得到函式 g tautg ttau。t 不是常數而是自由變數，當 t 取不同值時，g ttau 能沿著 tau 軸 滑動。如果 t 是正值，則 g ttau 等於 g tau 沿著 tau 軸向右（朝向 infty）滑動數量 t。如果 t 是負值，則 g ttau 等價於 g tau 向左（朝向 infty）滑動數量 t。 讓 t 從 infty 變化至 infty，當兩個函式交會時，計算交會範圍中兩個函式乘積的積分值。換句話說，在時間 t，計算函式 f tau 經過權重函式 g t tau 施以權重後其下的面積。右側第三、第四和第五行圖中，分別是 t0、t25 和 t55 時的情況，從 t 1 時開始有交會，例如在第四行圖中，tau0 則 g ttaug 25，tau15 則 g ttaug 1，對於 tau notin 0 15 有著 f tau g ttau0。 最後得到的波形（未包含在此圖中）就是 f 和 g 的摺積。 兩個矩形脈衝波的摺積。其中函式 g 首先對 tau0 反射，接著平移 t，成為 g ttau。那麼重疊部份的面積就相當於 t 處的卷積，其中橫坐標代表待變數 tau 以及新函式 fast g 的自變數 t。 矩形脈衝波和指數衰減脈衝波的摺積（後者可能出現於 RC 電路中），同樣地重疊部份面積就相當於 t 處的摺積。注意到因為 g 是對稱的，所以在這兩張圖中，反射並不會改變它的形狀。 週期卷積 兩個 T 週期的函式 h__Tt 和 x__Tt 的 週期卷積 定義為 ： int_t_0t_0T h__Ttau x__Tt taudtau 這裡的 t_0 是任意引數。 任何 s t，都可以透過求函式 s t 的所有整數倍 P 的平移的總和，從而製作出具有周期 P 的週期函式 s__Pt，這叫做： s__Pt triangleq sum_minftyinfty s t mP sum_minftyinfty s t mP quad m in mathbb Z 對於無週期函式 h 與 x，其週期 T 的週期求和分別是 h__Tt 與 x__Tt，h 與 x 的週期卷積，可以定義為 h t 與 x__Tt 的常規卷積，或 x t 與 h__Tt 的常規卷積，二者都等價於 h__Tt 與 x__Tt 的週期積分： h x__Tt triangleq int_inftyinfty h tau x__Tt taudtau int_t_0t_0T h__Ttau x__Tt taudtau h x__Tt x h__Tt 圓周卷積是週期卷積的特殊情況，其中函式 h 和 x 二者的非零部份，都限定在區間 0T 之內，此時的週期求和稱為 週期延拓。h x__T 中函式 x__T 可以透過取非負餘數的模除運算表達為 圓周函式： x__Tt x t_mathrm mod T quad tinmathbb R 而積分的界限可以縮簡至函式 h 的長度範圍 0T： h x__Tt int_0T h tau x t tau_mathrm mod T dtau 離散卷積 對於定義在整數 mathbb Z 上且得出複數值的函式 f n 和 g n，離散卷積定義為： f gn triangleq sum_minftyinfty f m g nm sum_minftyinfty f nm g m 這裡一樣把函式定義域以外的值當成零，所以可以擴充套件函式到所有整數上（如果本來不是的話）。兩個有限序列的卷積的定義，是將這些序列擴充套件成在整數集合上有限支撐的函式。在這些序列是兩個多項式的係數之時，這兩個多項式的普通乘積的係數，就是這兩個序列的卷積。這叫做序列係數的柯西乘積。 當 g n 的支撐集為有限長度的 MM1dotsM1M 之時，上式會變成有限求和： fgnsum_mMM f nm g m 多維離散卷積 類似於一維情況，使用星號表示卷積，而維度體現在星號的數量上，M 維卷積就寫為 M 個星號。下面是 M 維訊號的卷積的表示法： y n_1n_2n__Mh n_1n_2n__M overset Mcdots x n_1n_2n__M 對於離散值的訊號，這個卷積可以直接如下這樣計算： sum_k_1inftyinfty sum_k_2inftyinftysum_k__Minftyinfty h k_1k_2k__M x n_1k_1n_2k_2n__Mk__M 結果的離散多維卷積所支撐的輸出區域，基於兩個輸入訊號所支撐的大小和區域來決定。 離散週期卷積 對於離散序列和一個引數 N，無週期函式 h 和 x 的 週期卷積 是為： h x__Nn triangleq sum_minftyinfty h m underbrace x__Nnm_sum_kinftyinfty x n m kN sum_m0N1 left sum_kinftyinfty hm kNright x__Nn m 這個函式有周期 N，它有最多 N 個唯一性的值。h 和 x 的非零範圍都是 0 N1 的特殊情況叫做圓周卷積： h x__Nn sum_m0N1 h m x__Nn m sum_m0N1 h m x n m_bmod N 離散圓周卷積可簡約為矩陣乘法，這裡的積分變換的核函式是迴圈矩陣 begin bmatrix y_0 y_1 vdots y__N1end bmatrix begin bmatrix h_0 h__N1 cdots h_1 h_1 h_0 cdots h_2 vdots vdots ddots vdots h__N1 h__N2 cdots h_0 end bmatrix begin bmatrix x_0 x_1 vdots x__N1end bmatrix 圓周卷積最經常出現的快速傅立葉變換的實現演算法比如雷德演演算法之中。 性質 代數 各種卷積運算元都滿足下列性質： 交換律 f g g f 結合律 f g h f g h 分配律 f g h f g f h 數乘結合律 a f g a f g f a g 其中 a 為任意實數（或複數）。 複數共軛 overline f g overline f overline g 微分有關 f g f g f g 積分有關 如果 F t intt_infty f tau dtau，並且 G t intt_infty g tau dtau，則有： F gt f Gt intt_inftyf gtaudtau 積分 如果 f 和 g 是可積分函式，則它們在整個空間上的卷積的積分，簡單的就是它們積分的乘積： int_Realsnf gt dntleft int_Realsn f t dntright left int_Realsn g t dntright 這是富比尼定理的結果。如果 f 和 g 只被假定為非負可測度函式，根據託內利定理，這也是成立的。 微分 在一元函式情況下，f 和 g 的卷積的導數有著： frac ddtf g frac dfdt g f frac dgdt 這裡的 frac ddt 是微分運算元。更一般的說，在多元函式的情況下，對偏導數也有類似的公式： frac partialpartial t_if g frac partial fpartial t_i g f frac partial gpartial t_i 這就有了一個特殊結論，卷積可以看作 光滑 運算：f 和 g 的卷積可微分的次數，是 f 和 g 的總數。 這些恆等式成立的嚴格條件，為 f 和 g 是絕對可積分的，並且至少二者之一有絕對可積分（L1）弱導數，這是的結論。 在離散情況下，差分運算元 Delta fn f n1f n 滿足類似的關係： Delta f g Delta f g f Delta g 卷積定理 卷積定理指出，在適當的條件下，兩個函式（或訊號）的卷積的傅立葉變換，是它們的傅立葉變換的逐點乘積。更一般的說，在一個域（比如時域）中的卷積等於在其他域（比如頻域）逐點乘法。 設兩個函式 g x 和 h x，分別具有傅立葉變換 G s 和 H s： begin align G s triangleq mathcal Fgs int_inftyinfty g x ei 2 pi s x dx quad s in mathbb R H s triangleq mathcal Fhs int_inftyinfty h x ei 2 pi s x dx quad s in mathbb R end align 這裡的 mathcal F 運算元指示傅立葉變換。 卷積定理聲稱： mathcal Fg hs G s H s quad s in mathbb R mathcal Fg cdot hs G sH s quad s in mathbb R 應用逆傅立葉變換 mathcal F1 產生推論： g hs mathcal F1Gcdot H quad s in mathbb R g cdot hs mathcal F1 G H quad s in mathbb R 這裡的算符 cdot 指示逐點乘法。 這一定理對拉普拉斯變換、雙邊拉普拉斯變換、Z 變換、梅林變換和等各種傅立葉變換的變體同樣成立。在調和分析中還可以推廣到在區域性緊緻的阿貝爾群上定義的傅立葉變換。 週期卷積 對於週期為 P 的函式 g__Px 和 h__Px，可以被表達為二者的： begin align g__Px triangleq sum_minftyinfty g xmP quad m in mathbb Z h__Px triangleq sum_minftyinfty h xmP quad m in mathbb Z end align 它們的傅立葉級數係數為： begin align G k triangleq mathcal Fg__Pk frac 1P int_P g__Px ei 2pi k xP dx quad k in mathbb Z H k triangleq mathcal Fh__Pk frac 1P int_P h__Px ei 2pi k xP dx quad k in mathbb Z end align 這裡的 mathcal F 運算元指示傅立葉級數積分。 逐點乘積 g__Pxcdot h__Px 的週期也是 P，它的傅立葉級數係數為： mathcal Fg__Pcdot h__Pk GHk 週期卷積 g__P hx 的週期也是 P，週期卷積的卷積定理為： mathcal Fg__P hk Pcdot G k H k 離散卷積 對於作為兩個連續函式取樣的序列 g n 和 h n，它們具有離散時間傅立葉變換 G s 和 H s： begin align G s triangleq mathcal Fgs sum_ninftyinfty g ncdot ei 2pi s n quad s in mathbb R H s triangleq mathcal Fhs sum_ninftyinfty h ncdot ei 2pi s n quad s in mathbb R end align 這裡的 mathcal F 運算元指示離散時間傅立葉變換（DTFT）。 離散卷積的卷積定理為： mathcal Fg hs G s H s 離散週期卷積 對於週期為 N 的序列 g__Nn 和 h__Nn： begin align g__Nn triangleq sum_minftyinfty g nmN quad mn in mathbb Z h__Nn triangleq sum_minftyinfty h nmN quad mn in mathbb Z end align 相較於離散時間傅立葉變換 G s 和 H s 的週期是 1，它們是按間隔 1N 取樣 G s 和 H s，並在 N 個取樣上進行了逆離散傅立葉變換（DFT1 或 IDFT）的結果。 離散週期卷積 g__N hn 的週期也是 N。離散週期卷積定理為： mathcal Fg__N hk underbrace mathcal Fg__Nk_G kN cdot underbrace mathcal Fh__Nk_H kN quad kn in mathbb Z 這裡的 mathcal F 運算元指示長度 N 的離散傅立葉變換（DFT）。 它有著推論： g__N hn mathcal F1mathcal Fg__N cdot mathcal Fh__N 對於其非零時段小於等於 N 的 g 和 h，離散圓周卷積的卷積定理為： g__N hn mathcal F1mathcal Fg cdot mathcal Fh 推廣 卷積的概念還可以推廣到數列、測度以及廣義函式上去。函式 fg 是定義在 mathbb Rn 上的可測函式（measurable function），f 與 g 存在卷積並記作 f g。如果函式不是定義在 mathbb Rn 上，可以把函式定義域以外的值都規定成零，這樣就變成一個定義在 mathbb Rn 上的函式。 若 G 是有某 m 測度的群（例如豪斯多夫空間上哈爾測度下區域性緊緻的拓撲群），對於 G 上 m 勒貝格可積的實數或複數函式 f 和 g，可定義它們的卷積： f gx int_G f y g xy1dm y 對於這些群上定義的卷積同樣可以給出諸如卷積定理等性質，但是這需要對這些群的表示理論以及調和分析的彼得 外爾定理。 離散卷積的計算方法 計算卷積 f ng n 有三種主要的方法，分別為 直接計算（Direct Method） 快速傅立葉轉換（FFT） 分段卷積（sectioned convolution） 方法 1 是直接利用定義來計算卷積，而方法 2 和 3 都是用到了 FFT 來快速計算卷積。也有不需要用到 FFT 的作法，如使用數論轉換。 方法 1：直接計算 作法：利用卷積的定義 y n f ng n sum_m0M1 f nm g m 若 f n 和 g n 皆為實數訊號，則需要 MN 個乘法。 若 f n 和 g n 皆為更一般性的複數訊號，不使用複數乘法的快速演演算法，會需要 4MN 個乘法；但若使用複數乘法的快速演演算法，則可簡化至 3MN 個乘法。 因此，使用定義直接計算卷積的複雜度為 O MN 。 方法 2：快速傅立葉轉換 概念：由於兩個離散訊號在時域（time domain）做卷積相當於這兩個訊號的離散傅立葉轉換在頻域（frequency domain）做相乘： y n f ng n leftrightarrow Y f F f G f ，可以看出在頻域的計算較簡單。 作法：因此這個方法即是先將訊號從時域轉成頻域： F f DFT_P f n G f DFT_P g n ，於是 Y f DFT_P f n DFT_P g n ，最後再將頻域訊號轉回時域，就完成了卷積的計算： y n IDFT_P DFT_P f n DFT_P g n 總共做了 2 次 DFT 和 1 次 IDFT。 特別注意 DFT 和 IDFT 的點數 P 要滿足 P ge MN1 。 由於 DFT 有快速演演算法 FFT，所以運算量為 O Plog_2 P 假設 P 點 DFT 的乘法量為 a ， f n 和 g n 為一般性的複數訊號，並使用複數乘法的快速演演算法，則共需要 3a 3P 個乘法。 方法 3：分段卷積 概念：將 f n 切成好幾段（section），每一段分別和 g n 做卷積後，再將結果相加。 作法：先將 f n 切成每段長度為 L 的區段（ L M ），假設共切成 S 段： f nn01N1 to f_1 n f_2 n f_3 n f_S n S left lceil frac NL right rceil Section 1 f_1 n f n n01L1 Section 2 f_2 n f nL n01L1 vdots Section r f_r n f nr1 L n01L1 vdots Section S f_S n f nS1 L n01L1 ， f n 為各個 section 的和 f n sum_r1S f_r nr1 L 。 因此， y n f ng n sum_r1S sum_m0M1 f_r nr1 Lm g m ， 每一小段作卷積則是採用方法 2，先將時域訊號轉到頻域相乘，再轉回時域： y n IDFT sum_r1S sum_m0M1 DFT_P f_r nr1 Lm DFT_P g m P ge ML1 。 總共只需要做 P 點 FFT 2S1 次，因為 g n 只需要做一次 FFT。 假設 P 點 DFT 的乘法量為 a ， f n 和 g n 為一般性的複數訊號，並使用複數乘法的快速演演算法，則共需要 2S1 a3SP 個乘法。 運算量： frac NL 3 LM1log_2LM11 運算複雜度： O N，和 N 呈線性，較方法 2 小。 分為 OverlapAdd 和 OverlapSave 兩種方法。 分段卷積 OverlapAdd 欲做 x nh n 的分段卷積分， x n 長度為 N ， h n 長度為 M Step 1 將 x n 每 L 分成一段 Step 2 再每段 L 點後面新增 M1 個零，變成長度 LM1 Step 3 把 h n 新增 L1 個零，變成長度 LM1 的 hn Step 4 把每個 x n 的小段和 hn 做快速卷積，也就是 IDFT_LM1DFT_LM1x n DFT_LM1hn ，每小段會得到長度 LM1 的時域訊號 Step 5 放置第 i 個小段的起點在位置 Ltimes i 上，i0 1 lceil frac NL rceil1 Step 6 會發現在每一段的後面 M1 點有重疊，將所有點都相加起來，顧名思義 OverlapAdd，最後得到結果 舉例來說 x n1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 長度 N15 h n1 2 3 長度 M3 令 L5 FileData overlap addpngx n 和 h n 令 L5 切成三段，分別為 x_0 n x_1 n x_2 n 每段填 M1 個零，並將 h n 填零至長度 LM1 FileSeperate x overlap addpng 分段 x n 將每一段做 IDFT_LM1DFT_LM1x n DFT_LM1hn FileSeperate result overlap addpng 分段運算結果 若將每小段擺在一起，可以注意到第一段的範圍是 0thicksim6 ，第二段的範圍是 5thicksim 11 ，第三段的範圍是 10thicksim 16 ，三段的範圍是有重疊的 FileSummation overlap addpng 合併分段運算結果 最後將三小段加在一起，並將結果和未分段的卷積做比較，上圖是分段的結果，下圖是沒有分段並利用快速卷積所算出的結果，驗證兩者運算結果相同。 FileFinal result overlap addpng 結果比較圖 分段卷積 OverlapSave 欲做 x nh n 的分段卷積分， x n 長度為 N ， h n 長度為 M Step 1 將 x n 前面填 M1 個零 Step 2 第一段 i0 從新的 x n 中 Ltimes i M1times i 取到 Ltimes i1 M1times i 1 總共 L 點當做一段，因此每小段會重複取到前一小段的 M1 點，取到新的一段全為零為止 Step 3 把 h n 新增 LM 個零，變成長度 L 的 hn Step 4 把每個 x n 的小段和 hn 做快速卷積，也就是 IDFT_LDFT_Lx n DFT_Lhn ，每小段會得到長度 L 的時域訊號 Step 5 對於每個 i 小段，只會保留末端的 LM1 點，因此得名 OverlapSave Step 6 將所有保留的點合再一起，得到最後結果 舉例來說 x n1 2 3 4 5 67 8 9 10 11 12 13 14 15 長度 N15 h n1 2 3 長度 M3 令 L7 FileData overlap savepngx n 和 h n 將 x n 前面填 M1 個零以後，按照 Step 2 的方式分段，可以看到每一段都重複上一段的 M1 點 FileSeperate x overlap savepng 分段 x n 再將每一段做 IDFT_LDFT_Lx n DFT_Lhn 以後可以得到 FileSeperate result overlap savepng 分段運算結果 保留每一段末端的 LM1 點，擺在一起以後，可以注意到第一段的範圍是 0thicksim 4 ，第二段的範圍是 5thicksim 9 ，第三段的範圍是 10thicksim 14 ，第四段的範圍是 15thicksim 16 ，四段的範圍是沒有重疊的 FileSummation overlap savepng 合併分段運算結果 將結果和未分段的卷積做比較，下圖是分段的結果，上圖是沒有分段並利用快速卷積所算出的結果，驗證兩者運算結果相同。 FileFinal compare overlap savepng 結果比較圖 至於為什麼要把前面 M1 丟掉？以下以一例子來闡述 x n1 2 3 4 5 67 8 9 10 長度 L10 ， h n1 2 3 4 5 長度 M5 第一條藍線代表 y 軸，而兩條藍線之間代表長度 L ，是在做快速摺積時的週期 FileOriginal ov extrapngx n 和 h n 當在做快速摺積時 IDFT_LDFT_Lx n DFT_Lhn ，是把訊號視為週期 L ，在時域上為迴圈摺積分，而在一開始前 M1 點所得到的值，是 h 0 h 6 h 7 h 8 h 9 和 x 0 x 6 x 7 x 8 x 9 內積的值， 然而 h 6 h 7 h 8 h 9 這 M1 個值應該要為零，以往在做快速摺積時長度為 LM1 時不會遇到這些問題， 而今天因為在做快速摺積時長度為 L 才會把這 M1 點算進來，因此我們要丟棄這 M1 點內積的結果 FileCir conv ov extrapng 迴圈摺積 為了要丟棄這 M1 點內積的結果，位移 h n M1 點，並把位移以後內積合的值才算有效。 FileCir conv shift ov extrapng 位移以後內積 應用時機 以上三種方法皆可用來計算卷積，其差別在於所需總體乘法量不同。基於運算量以及效率的考量，在計算卷積時，通常會選擇所需總體乘法量較少的方法。 以下根據 f n 和 g n 的長度（ N M ）分成 5 類，並列出適合使用的方法： M 為一非常小的整數 直接計算 M ll N 分段卷積 M approx N 快速傅立葉變換 M gg N 分段卷積 N 為一非常小的整數 直接計算 基本上，以上只是粗略的分類。在實際應用時，最好還是算出三種方法所需的總乘法量，再選擇其中最有效率的方法來計算卷積。 例子 Q1：當 N 2000 M 17 ，適合用哪種方法計算卷積？Ans： 方法 1：所需乘法量為 3MN 102000 方法 2： P ge MN1 2016 ，而 2016 點的 DFT 最少乘法數 a 12728 ，所以總乘法量為 3 aP 44232 方法 3： 若切成 8 塊（ S 8 ），則 L 250 P ge ML1266 。選 P 288 ，則總乘法量為 2S1 a3SP 26632 ，比方法 1 和 2 少了很多。 但是若要找到最少的乘法量，必須依照以下步驟 1 先找出 L 解 L frac partial frac NL 3 LM1log_2LM11partial L0 2 由 P ge LM1 算出點數在 P 附近的 DFT 所需最少的乘法量，選擇 DFT 的點數 3 最後由 L P1M 算出 L_opt 因此， 1 由運算量對 L 的偏微分為 0 而求出 L 85 2 P ge LM1 101 ，所以選擇 101 點 DFT 附近點數乘法量最少的點數 P 96 或 P 120。 31 當 P 96 to a 280 L P1M 80 to S 25，總乘法量為 2S1 a3SP 21480 。 32 當 P 120 to a 380 L P1M 104 to S 20，總乘法量為 2S1 a3SP 22780 。 由此可知，切成 20 塊會有較好的效率，而所需總乘法量為 21480。 因此，當 N 2000 M 17 ，所需總乘法量：分段卷積 快速傅立葉轉換 直接計算。故，此時選擇使用分段卷積來計算卷積最適合。 Q2：當 N 1024 M 3 ，適合用哪種方法計算卷積？Ans： 方法 1：所需乘法量為 3MN 9216 方法 2： P ge MN1 1026 ，選擇 1026 點 DFT 附近點數乘法量最少的點數， to P 1152 a 7088 。 因此，所需乘法量為 3 aP 24342 方法 3： 1 由運算量對 L 的偏微分為 0 而求出 L 5 2 P ge LM1 7 ，所以選擇 7 點 DFT 附近點數乘法量最少的點數 P 8 或 P 6 或 P 4。 31 當 P 8 to a 4 L P1M 6 to S 171，總乘法量為 2S1 a3SP 5476 。 32 當 P 6 to a 4 L P1M 4 to S 256，總乘法量為 2S1 a3SP 6660 。 33 當 P 4 to a 0 L P1M 2 to S 512，總乘法量為 2S1 a3SP 6144 。 由此可知，切成 171 塊會有較好的效率，而所需總乘法量為 5476。 因此，當 N 1024 M 3 ，所需總乘法量：分段卷積 直接計算 快速傅立葉轉換。故，此時選擇使用分段卷積來計算卷積最適合。 雖然當 M 是個很小的正整數時，大致上適合使用直接計算。但實際上還是將 3 個方法所需的乘法量都算出來，才能知道用哪種方法可以達到最高的效率。 Q3：當 N 1024 M 600 ，適合用哪種方法計算卷積？Ans： 方法 1：所需乘法量為 3MN 1843200 方法 2： P ge MN1 1623 ，選擇 1026 點 DFT 附近點數乘法量最少的點數， to P 2016 a 12728 。 因此，所需乘法量為 3 aP 44232 方法 3： 1 由運算量對 L 的偏微分為 0 而求出 L 1024 2 P ge LM1 1623 ，所以選擇 1623 點 DFT 附近點數乘法量最少的點數 P 2016。 3 當 P 2016 to a 12728 L P1M 1417 to S 1，總乘法量為 2S1 a3SP 44232 。 由此可知，此時切成一段，就跟方法 2 一樣，所需總乘法量為 44232。 因此，當 N 1024 M 600 ，所需總乘法量：快速傅立葉轉換 分段卷積 直接計算。故，此時選擇使用分段卷積來計算卷積最適合。 應用 卷積在科學、工程和數學上都有很多應用： 代數中，整數乘法和多項式乘法都是卷積。 卷積神經網路應用了多重級聯的卷積，它被用於機器視覺和人工智慧，儘管在多數情況下實際上用的是互相關而非卷積。 在非人工智慧的影像處理中，用作影像模糊、銳化、邊緣檢測。 統計學中，加權的滑動平均是一種卷積。 機率論中，兩個統計獨立變數 X 與 Y 的和的機率密度函式是 X 與 Y 的機率密度函式的卷積。 聲學中，回聲可以用源聲與一個反映各種反射效應的函式的卷積表示。 電子工程與訊號處理中，任一個線性系統的輸出都可以透過將輸入訊號與系統函式（系統的衝激響應）做卷積獲得。 物理學中，任何一個線性系統（符合疊加原理）都存在卷積。 參見 反捲積 自相關函式 傅立葉變換 引用 延伸閱讀 DominguezTorres Alejandro Nov 2 2010 Origin and history of convolution 41 pgs httpwwwslidesharenetAlexdfaroriginadnhistoryofconvolution Cranfield Bedford MK43 OAL UK Retrieved Mar 13 2013 外部連結 Earliest Uses The entry on Convolution has some historical information Convolution on The Data Analysis BriefBook httpwwwjhuedusignalsconvolveindexhtml Visual convolution Java Applet httpwwwjhuedusignalsdiscreteconv2indexhtml Visual convolution Java Applet for discretetime functions httpsgetthesolutionnetprojectsdiscretconvolution discretconvolution online calculator httpslpsaswarthmoreeduConvolutionCIhtml Convolution demo and visualization in javascript httpsphireskygithubioconvolutiondemo Another convolution demo in javascript Lectures on Image Processing A collection of 18 lectures in pdf format from Vanderbilt University Lecture 7 is on 2D convolution by Alan Peters httpsarchiveorgdetailsLectures_on_Image_Processing Convolution Kernel Mask Operation Interactive tutorial Convolution at MathWorld Freeverb3 Impulse Response Processor Opensource zero latency impulse response processor with VST plugins Stanford University CS 178 interactive Flash demo showing how spatial convolution works A video lecture on the subject of convolution given by Salman Khan Example of FFT convolution for patternrecognition image processing Intuitive Guide to Convolution A blogpost about an intuitive interpretation of convolution J J J Category 雙線性運算元 Category 特徵檢測_計算機視覺