卷積、互相關 和自相關 的圖示比較。運算涉及函數
f
{\displaystyle f}
,並假定
f
{\displaystyle f}
的高度是1.0,在5個不同點上的值,用在每個點下面的陰影面積來指示。
f
{\displaystyle f}
的對稱性是卷積
g
∗
f
{\displaystyle g*f}
和互相關
f
⋆
g
{\displaystyle f\star g}
在這個例子中相同的原因。
在泛函分析 中,捲積 (convolution),或譯為疊積 、褶積 或旋積 ,是透過兩個函數
f
{\displaystyle f}
和
g
{\displaystyle g}
生成第三個函數的一種數學算子 ,表徵函數
f
{\displaystyle f}
與經過翻轉和平移的
g
{\displaystyle g}
的乘積函數所圍成的曲邊梯形的面積。如果將參加卷積的一個函數看作區間 的指示函數 ,卷積還可以被看作是「滑動平均 」的推廣。
定義
卷積是數學分析 中一種重要的運算。設:
f
(
t
)
{\displaystyle f(t)}
和
g
(
t
)
{\displaystyle g(t)}
是實數
R
{\displaystyle \mathbb {R} }
上的兩個可積函數 ,定義二者的卷積
(
f
∗
g
)
(
t
)
{\displaystyle (f*g)(t)}
為如下特定形式的積分 變換 :
(
f
∗
g
)
(
t
)
≜
∫
−
∞
∞
f
(
τ
)
g
(
t
−
τ
)
d
τ
{\displaystyle (f*g)(t)\triangleq \int _{-\infty }^{\infty }f(\tau )g(t-\tau )\,\mathrm {d} \tau }
(
f
∗
g
)
(
t
)
{\displaystyle (f*g)(t)}
仍為可積函數,並且有着:
(
f
∗
g
)
(
t
)
≜
∫
−
∞
∞
f
(
t
−
τ
)
g
(
τ
)
d
τ
=
(
g
∗
f
)
(
t
)
{\displaystyle (f*g)(t)\triangleq \int _{-\infty }^{\infty }f(t-\tau )g(\tau )\,d\tau =(g*f)(t)}
函數
f
{\displaystyle f}
和
g
{\displaystyle g}
,如果只支撐 在
[
0
,
∞
]
{\displaystyle [0,\infty ]}
之上,則積分界限可以截斷為:
(
f
∗
g
)
(
t
)
=
∫
0
t
f
(
τ
)
g
(
t
−
τ
)
d
τ
{\displaystyle (f*g)(t)=\int _{0}^{t}f(\tau )g(t-\tau )\,d\tau \quad }
對於
f
,
g
:
[
0
,
∞
)
→
R
{\displaystyle \ f,g:[0,\infty )\to \mathbb {R} }
對於兩個得出複數 值的多元實變函數 ,可以定義二者的卷積為如下形式的多重積分 :
(
f
∗
g
)
(
t
1
,
t
2
,
⋯
,
t
n
)
≜
∫
∫
⋯
∫
R
n
f
(
τ
1
,
τ
2
,
⋯
,
τ
n
)
g
(
t
1
−
τ
1
,
t
2
−
τ
2
,
⋯
,
t
n
−
τ
n
,
)
d
τ
1
d
τ
2
⋯
d
τ
n
≜
∫
R
n
f
(
τ
)
g
(
t
−
τ
)
d
n
τ
{\displaystyle {\begin{aligned}(f*g)(t_{1},t_{2},\cdots ,t_{n})&\triangleq \int \int \cdots \int _{\mathbb {R} ^{n}}f(\tau _{1},\tau _{2},\cdots ,\tau _{n})g(t_{1}-\tau _{1},t_{2}-\tau _{2},\cdots ,t_{n}-\tau _{n},)\,d\tau _{1}d\tau _{2}\cdots d\tau _{n}\\&\triangleq \int _{\mathbb {R} ^{n}}f(\tau )g(t-\tau )\,d^{n}\tau \end{aligned}}}
卷積有一個通用的工程上的符號約定[ 1] :
f
(
t
)
∗
g
(
t
)
≜
∫
−
∞
∞
f
(
τ
)
g
(
t
−
τ
)
d
τ
⏟
(
f
∗
g
)
(
t
)
{\displaystyle f(t)*g(t)\triangleq \underbrace {\int _{-\infty }^{\infty }f(\tau )g(t-\tau )\,d\tau } _{(f*g)(t)}}
它必須被謹慎解釋以避免混淆。例如:
f
(
t
)
∗
g
(
t
−
t
0
)
{\displaystyle f(t)*g(t-t_{0})}
等價於
(
f
∗
g
)
(
t
−
t
0
)
{\displaystyle (f*g)(t-t_{0})}
,而
f
(
t
−
t
0
)
∗
g
(
t
−
t
0
)
{\displaystyle f(t-t_{0})*g(t-t_{0})}
卻實際上等價於
(
f
∗
g
)
(
t
−
2
t
0
)
{\displaystyle (f*g)(t-2t_{0})}
[ 2] 。
歷史
卷積運算的最早使用出現在達朗貝爾 於1754年出版的《宇宙體系的幾個要點研究》中對泰勒定理 的推導之中[ 3] 。還有西爾維斯特·拉克魯瓦 ,將
∫
f
(
u
)
⋅
g
(
x
−
u
)
d
u
{\textstyle \int f(u)\cdot g(x-u)\,du}
類型的表達式,用在他的1797年–1800年出版的著作《微分與級數論文》中[ 4] 。此後不久,卷積運算出現在皮埃爾-西蒙·拉普拉斯 、約瑟夫·傅里葉 和西梅翁·泊松 等人的著作中。這個運算以前有時叫做「Faltung」(德語中的摺疊)、合成乘積、疊加積分或卡森積分[ 5] 。
「卷積」這個術語早在1903年就出現了,然而其定義在早期使用中是相當生僻的[ 6] [ 7] ,直到1950年代或1960年代之前都未曾廣泛使用。
簡介
如果
f
{\displaystyle f}
和
g
{\displaystyle g}
都是在Lp 空間
L
1
(
R
n
)
{\displaystyle L^{1}(\mathbb {R} ^{n})}
內的勒貝格可積函數 ,則二者的卷積存在,並且在這種情況下
f
∗
g
{\displaystyle f*g}
也是可積的[ 8] 。這是托內利定理 的結論。對於在
L
1
{\displaystyle L^{1}}
中的函數在離散卷積下,或更一般的對於在任何群的上的卷積,這也是成立的。同樣的,如果
f
∈
L
1
(
R
n
)
{\displaystyle f\in L^{1}(\mathbb {R} ^{n})}
而
g
∈
L
p
(
R
n
)
{\displaystyle g\in L^{p}(\mathbb {R} ^{n})}
,這裡的
1
≤
p
≤
∞
{\displaystyle 1\leq p\leq \infty }
,則
f
∗
g
∈
L
p
(
R
n
)
{\displaystyle f*g\in L^{p}(\mathbb {R} ^{n})}
,並且其Lp 範數 間有着不等式 :
‖
f
∗
g
‖
p
≤
‖
f
‖
1
‖
g
‖
p
{\displaystyle \|{f}*g\|_{p}\leq \|f\|_{1}\|g\|_{p}}
在
p
=
1
{\displaystyle p=1}
的特殊情況下,這顯示出
L
1
{\displaystyle L^{1}}
是在卷積下的巴拿赫代數 (並且如果
f
{\displaystyle f}
和
g
{\displaystyle g}
幾乎處處 非負則兩邊間等式成立)。
卷積與傅里葉變換 有着密切的關係。例如兩函數的傅里葉變換的乘積等於它們卷積後的傅里葉變換,利用此一性質,能簡化傅里葉分析中的許多問題。
由卷積得到的函數
f
∗
g
{\displaystyle f*g}
,一般要比
f
{\displaystyle f}
和
g
{\displaystyle g}
都光滑。特別當
g
{\displaystyle g}
為具有緊支集的光滑函數 ,
f
{\displaystyle f}
為局部可積時,它們的卷積
f
∗
g
{\displaystyle f*g}
也是光滑函數。利用這一性質,對於任意的可積函數
f
{\displaystyle f}
,都可以簡單地構造出一列逼近於
f
{\displaystyle f}
的光滑函數列
f
s
{\displaystyle f_{s}}
,這種方法稱為函數的光滑化或正則化 。
函數
f
(
t
)
{\displaystyle f(t)}
和
g
(
t
)
{\displaystyle g(t)}
的互相關
(
f
⋆
g
)
(
τ
)
{\displaystyle (f\star g)(\tau )}
,等價於
f
(
−
τ
)
{\displaystyle f(-\tau )}
的共軛複數
f
(
−
τ
)
¯
{\displaystyle {\overline {f(-\tau )}}}
與
g
(
τ
)
{\displaystyle g(\tau )}
的卷積:
(
f
⋆
g
)
(
τ
)
≜
∫
−
∞
∞
f
(
t
−
τ
)
¯
g
(
t
)
d
t
=
f
(
−
τ
)
¯
∗
g
(
τ
)
{\displaystyle (f\star g)(\tau )\triangleq \int _{-\infty }^{\infty }{\overline {f(t-\tau )}}g(t)\,dt={\overline {f(-\tau )}}*g(\tau )}
這裡的
τ
{\displaystyle \tau }
叫做移位(displacement)或滯後(lag)。
對於單位脈衝 函數
δ
(
t
)
{\displaystyle \delta (t)}
和某個函數
h
(
t
)
{\displaystyle h(t)}
,二者得到的捲積就是
h
(
t
)
{\displaystyle h(t)}
本身,此
h
(
t
)
{\displaystyle h(t)}
被稱為衝激響應 :
(
δ
∗
h
)
(
t
)
=
∫
−
∞
∞
δ
(
τ
)
h
(
t
−
τ
)
d
τ
=
h
(
t
)
{\displaystyle (\delta *h)(t)=\int _{-\infty }^{\infty }\delta (\tau )h(t-\tau )\,d\tau =h(t)}
在連續時間線性非時變系統 中,輸出信號
y
(
t
)
{\displaystyle y(t)}
被描述為輸入信號
x
(
t
)
{\displaystyle x(t)}
與衝激響應
h
(
t
)
{\displaystyle h(t)}
的卷積[ 9] :
y
(
t
)
=
(
x
∗
h
)
(
t
)
≜
∫
−
∞
∞
x
(
t
−
τ
)
⋅
h
(
τ
)
d
τ
=
∫
−
∞
∞
x
(
τ
)
⋅
h
(
t
−
τ
)
d
τ
{\displaystyle y(t)=(x*h)(t)\ \triangleq \ \int \limits _{-\infty }^{\infty }x(t-\tau )\cdot h(\tau )\,\mathrm {d} \tau =\int \limits _{-\infty }^{\infty }x(\tau )\cdot h(t-\tau )\,\mathrm {d} \tau }
兩個獨立 的隨機變量
U
{\displaystyle U}
和
V
{\displaystyle V}
,每個都有一個概率密度函數 ,二者之和的概率密度,是它們單獨的密度函數的卷積:
f
U
+
V
(
x
)
=
∫
−
∞
∞
f
U
(
y
)
f
V
(
x
−
y
)
d
y
=
(
f
U
∗
f
V
)
(
x
)
{\displaystyle f_{U+V}(x)=\int _{-\infty }^{\infty }f_{U}(y)f_{V}(x-y)\,dy=\left(f_{U}*f_{V}\right)(x)}
圖解
已知右側第一行圖中兩個函數
f
(
t
)
{\displaystyle f(t)}
和
g
(
t
)
{\displaystyle g(t)}
。
首先將兩個函數都用約束變量
τ
{\displaystyle \tau }
來表示,並將
g
(
τ
)
{\displaystyle g(\tau )}
翻轉至縱軸另一側,從而得到右側第二行圖中
f
(
τ
)
{\displaystyle f(\tau )}
和
g
(
−
τ
)
{\displaystyle g(-\tau )}
。
向函數
g
(
−
τ
)
{\displaystyle g(-\tau )}
增加一個時間偏移量
t
{\displaystyle t}
,得到函數
g
(
−
(
τ
−
t
)
)
=
g
(
t
−
τ
)
{\displaystyle g(-(\tau -t))=g(t-\tau )}
。
t
{\displaystyle t}
不是常數 而是自由變量 ,當
t
{\displaystyle t}
取不同值時,
g
(
t
−
τ
)
{\displaystyle g(t-\tau )}
能沿着
τ
{\displaystyle \tau }
軸「滑動」。如果
t
{\displaystyle t}
是正值,則
g
(
t
−
τ
)
{\displaystyle g(t-\tau )}
等於
g
(
−
τ
)
{\displaystyle g(-\tau )}
沿着
τ
{\displaystyle \tau }
軸向右(朝向
+
∞
{\displaystyle +\infty }
)滑動數量
t
{\displaystyle t}
。如果
t
{\displaystyle t}
是負值,則
g
(
t
−
τ
)
{\displaystyle g(t-\tau )}
等價於
g
(
−
τ
)
{\displaystyle g(-\tau )}
向左(朝向
−
∞
{\displaystyle -\infty }
)滑動數量
|
t
|
{\displaystyle |t|}
。
讓
t
{\displaystyle t}
從
−
∞
{\displaystyle -\infty }
變化至
+
∞
{\displaystyle +\infty }
,當兩個函數交會時,計算交會範圍中兩個函數乘積的積分值。換句話說,在時間
t
{\displaystyle t}
,計算函數
f
(
τ
)
{\displaystyle f(\tau )}
經過權重函數
g
(
t
−
τ
)
{\displaystyle g(t-\tau )}
施以權重後其下的面積。右側第三、第四和第五行圖中,分別是
t
=
0
{\displaystyle t=0}
、
t
=
2.5
{\displaystyle t=2.5}
和
t
=
5.5
{\displaystyle t=5.5}
時的情況,從
t
>
1
{\displaystyle t>1}
時開始有交會,例如在第四行圖中,
τ
=
0
{\displaystyle \tau =0}
則
g
(
t
−
τ
)
=
g
(
2.5
)
{\displaystyle g(t-\tau )=g(2.5)}
,
τ
=
1.5
{\displaystyle \tau =1.5}
則
g
(
t
−
τ
)
=
g
(
1
)
{\displaystyle g(t-\tau )=g(1)}
,對於
τ
∉
[
0
,
1.5
]
{\displaystyle \tau \notin [0,1.5]}
有着
f
(
τ
)
g
(
t
−
τ
)
=
0
{\displaystyle f(\tau )g(t-\tau )=0}
。
最後得到的波形 (未包含在此圖中)就是
f
{\displaystyle f}
和
g
{\displaystyle g}
的捲積。
兩個矩形 脈衝波 的捲積。其中函數
g
{\displaystyle g}
首先對
τ
=
0
{\displaystyle \tau =0}
反射,接著平移
t
{\displaystyle t}
,成為
g
(
t
−
τ
)
{\displaystyle g(t-\tau )}
。那麼重疊部份的面積就相當於
t
{\displaystyle t}
處的卷積,其中橫坐標代表待變量
τ
{\displaystyle \tau }
以及新函數
f
∗
g
{\displaystyle f\ast g}
的自變量
t
{\displaystyle t}
。
矩形 脈衝波 和指數衰減 脈衝波 的捲積(後者可能出現於RC電路 中),同樣地重疊部份面積就相當於
t
{\displaystyle t}
處的捲積。注意到因為
g
{\displaystyle g}
是對稱的,所以在這兩張圖中,反射並不會改變它的形狀。
周期卷積
兩個
T
{\displaystyle T}
周期的函數
h
T
(
t
)
{\displaystyle h_{_{T}}(t)}
和
x
T
(
t
)
{\displaystyle x_{_{T}}(t)}
的「周期卷積」定義為[ 10] [ 11] :
∫
t
0
t
0
+
T
h
T
(
τ
)
x
T
(
t
−
τ
)
d
τ
{\displaystyle \int _{t_{0}}^{t_{0}+T}h_{_{T}}(\tau )x_{_{T}}(t-\tau )\,d\tau }
這裡的
t
0
{\displaystyle t_{0}}
是任意參數。
任何可積分函數
s
(
t
)
{\displaystyle s(t)}
,都可以通過求函數
s
(
t
)
{\displaystyle s(t)}
的所有整數倍
P
{\displaystyle P}
的平移 的總和 ,從而製作出具有周期
P
{\displaystyle P}
的周期函數
s
P
(
t
)
{\displaystyle s_{_{P}}(t)}
,這叫做周期求和 :
s
P
(
t
)
≜
∑
m
=
−
∞
∞
s
(
t
+
m
P
)
=
∑
m
=
−
∞
∞
s
(
t
−
m
P
)
,
m
∈
Z
{\displaystyle s_{_{P}}(t)\triangleq \sum _{m=-\infty }^{\infty }s(t+mP)=\sum _{m=-\infty }^{\infty }s(t-mP),\quad m\in \mathbb {Z} }
對於無周期函數
h
{\displaystyle h}
與
x
{\displaystyle x}
,其周期
T
{\displaystyle T}
的周期求和分別是
h
T
(
t
)
{\displaystyle h_{_{T}}(t)}
與
x
T
(
t
)
{\displaystyle x_{_{T}}(t)}
,
h
{\displaystyle h}
與
x
{\displaystyle x}
的周期卷積,可以定義為
h
(
t
)
{\displaystyle h(t)}
與
x
T
(
t
)
{\displaystyle x_{_{T}}(t)}
的常規卷積,或
x
(
t
)
{\displaystyle x(t)}
與
h
T
(
t
)
{\displaystyle h_{_{T}}(t)}
的常規卷積,二者都等價於
h
T
(
t
)
{\displaystyle h_{_{T}}(t)}
與
x
T
(
t
)
{\displaystyle x_{_{T}}(t)}
的周期積分:
(
h
∗
x
T
)
(
t
)
≜
∫
−
∞
∞
h
(
τ
)
x
T
(
t
−
τ
)
d
τ
=
∫
t
0
t
0
+
T
h
T
(
τ
)
x
T
(
t
−
τ
)
d
τ
{\displaystyle (h*x_{_{T}})(t)\ \triangleq \ \ \int _{-\infty }^{\infty }h(\tau )x_{_{T}}(t-\tau )\,d\tau \ =\ \int _{t_{0}}^{t_{0}+T}h_{_{T}}(\tau )x_{_{T}}(t-\tau )\,d\tau }
(
h
∗
x
T
)
(
t
)
=
(
x
∗
h
T
)
(
t
)
{\displaystyle (h*x_{_{T}})(t)=(x*h_{_{T}})(t)}
圓周卷積 是周期卷積的特殊情況[ 11] [ 12] ,其中函數
h
{\displaystyle h}
和
x
{\displaystyle x}
二者的非零部份,都限定在區間
[
0
,
T
]
{\displaystyle [0,T]}
之內,此時的周期求和稱為「周期延拓」。
h
∗
x
T
{\displaystyle h*x_{_{T}}}
中函數
x
T
{\displaystyle x_{_{T}}}
可以通過取非負 餘數 的模除 運算表達為「圓周函數」:
x
T
(
t
)
=
x
(
t
m
o
d
T
)
,
t
∈
R
{\displaystyle x_{_{T}}(t)=x(t_{\mathrm {mod} \ T}),\quad t\in \mathbb {R} }
而積分的界限可以縮簡至函數
h
{\displaystyle h}
的長度範圍
[
0
,
T
]
{\displaystyle [0,T]}
:
(
h
∗
x
T
)
(
t
)
=
∫
0
T
h
(
τ
)
x
(
(
t
−
τ
)
m
o
d
T
)
d
τ
{\displaystyle (h*x_{_{T}})(t)=\int _{0}^{T}h(\tau )x((t-\tau )_{\mathrm {mod} \ T})\ d\tau }
離散卷積
離散卷積示意圖
對於定義在整數
Z
{\displaystyle \mathbb {Z} }
上且得出複數 值的函數
f
[
n
]
{\displaystyle f[n]}
和
g
[
n
]
{\displaystyle g[n]}
,離散卷積定義為[ 13] :
(
f
∗
g
)
[
n
]
≜
∑
m
=
−
∞
∞
f
[
m
]
g
[
n
−
m
]
=
∑
m
=
−
∞
∞
f
[
n
−
m
]
g
[
m
]
{\displaystyle (f*g)[n]\ \ \triangleq \ \sum _{m=-\infty }^{\infty }{f[m]g[n-m]}=\sum _{m=-\infty }^{\infty }f[n-m]\,g[m]}
這裡一樣把函數定義域以外的值當成零,所以可以擴展函數到所有整數上(如果本來不是的話)。兩個有限序列的卷積的定義,是將這些序列擴展成在整數集合上有限支撐的函數。在這些序列是兩個多項式 的係數之時,這兩個多項式的普通乘積的係數,就是這兩個序列的卷積。這叫做序列係數的柯西乘積 。
當
g
[
n
]
{\displaystyle g[n]}
的支撐集 為有限長度的
{
−
M
,
−
M
+
1
,
…
,
M
−
1
,
M
}
{\displaystyle \{-M,-M+1,\dots ,M-1,M\}}
之時,上式會變成有限求和 :
(
f
∗
g
)
[
n
]
=
∑
m
=
−
M
M
f
[
n
−
m
]
g
[
m
]
{\displaystyle (f*g)[n]=\sum _{m=-M}^{M}f[n-m]g[m]}
多維離散卷積
用離散二維卷積對圖像 進行銳化 處理 的動畫
類似於一維情況,使用星號 表示卷積,而維度體現在星號的數量上,
M
{\displaystyle M}
維卷積就寫為
M
{\displaystyle M}
個星號。下面是
M
{\displaystyle M}
維信號的卷積的表示法:
y
(
n
1
,
n
2
,
.
.
.
,
n
M
)
=
h
(
n
1
,
n
2
,
.
.
.
,
n
M
)
∗
⋯
M
∗
x
(
n
1
,
n
2
,
.
.
.
,
n
M
)
{\displaystyle y(n_{1},n_{2},...,n_{_{M}})=h(n_{1},n_{2},...,n_{_{M}})*{\overset {M}{\cdots }}*x(n_{1},n_{2},...,n_{_{M}})}
對於離散值的信號,這個卷積可以直接如下這樣計算:
∑
k
1
=
−
∞
∞
∑
k
2
=
−
∞
∞
.
.
.
∑
k
M
=
−
∞
∞
h
(
k
1
,
k
2
,
.
.
.
,
k
M
)
x
(
n
1
−
k
1
,
n
2
−
k
2
,
.
.
.
,
n
M
−
k
M
)
{\displaystyle \sum _{k_{1}=-\infty }^{\infty }\sum _{k_{2}=-\infty }^{\infty }...\sum _{k_{_{M}}=-\infty }^{\infty }h(k_{1},k_{2},...,k_{_{M}})x(n_{1}-k_{1},n_{2}-k_{2},...,n_{_{M}}-k_{_{M}})}
結果的離散多維卷積所支撐的輸出區域,基於兩個輸入信號所支撐的大小和區域來決定。
在兩個二維信號之間的卷積的可視化
離散周期卷積
對比離散無周期卷積(左列)與離散圓周卷積(右列)
對於離散序列和一個參數
N
{\displaystyle N}
,無周期函數
h
{\displaystyle h}
和
x
{\displaystyle x}
的「周期卷積」是為:
(
h
∗
x
N
)
[
n
]
≜
∑
m
=
−
∞
∞
h
[
m
]
x
N
[
n
−
m
]
⏟
∑
k
=
−
∞
∞
x
[
n
−
m
−
k
N
]
=
∑
m
=
0
N
−
1
(
∑
k
=
−
∞
∞
h
[
m
−
k
N
]
)
x
N
[
n
−
m
]
{\displaystyle (h*x_{_{N}})[n]\ \triangleq \ \sum _{m=-\infty }^{\infty }h[m]\underbrace {x_{_{N}}[n-m]} _{\sum _{k=-\infty }^{\infty }x[n-m-kN]}\ =\ \sum _{m=0}^{N-1}\left(\sum _{k=-\infty }^{\infty }{h}[m-kN]\right)x_{_{N}}[n-m]}
這個函數有周期
N
{\displaystyle N}
,它有最多
N
{\displaystyle N}
個唯一性的值。
h
{\displaystyle h}
和
x
{\displaystyle x}
的非零範圍都是
[
0
,
N
−
1
]
{\displaystyle [0,N-1]}
的特殊情況叫做圓周卷積 :
(
h
∗
x
N
)
[
n
]
=
∑
m
=
0
N
−
1
h
[
m
]
x
N
[
n
−
m
]
=
∑
m
=
0
N
−
1
h
[
m
]
x
[
(
n
−
m
)
mod
N
]
{\displaystyle (h*x_{_{N}})[n]=\sum _{m=0}^{N-1}h[m]x_{_{N}}[n-m]=\sum _{m=0}^{N-1}h[m]x[(n-m)_{\bmod {N}}]}
離散圓周卷積可簡約為矩陣乘法 ,這裡的積分變換 的核函數是循環矩陣 :
[
y
0
y
1
⋮
y
N
−
1
]
=
[
h
0
h
N
−
1
⋯
h
1
h
1
h
0
⋯
h
2
⋮
⋮
⋱
⋮
h
N
−
1
h
N
−
2
⋯
h
0
]
[
x
0
x
1
⋮
x
N
−
1
]
{\displaystyle {\begin{bmatrix}y_{0}\\y_{1}\\\vdots \\y_{_{N-1}}\end{bmatrix}}={\begin{bmatrix}h_{0}&h_{_{N-1}}&\cdots &h_{1}\\h_{1}&h_{0}&\cdots &h_{2}\\\vdots &\vdots &\ddots &\vdots \\h_{_{N-1}}&h_{_{N-2}}&\cdots &h_{0}\end{bmatrix}}{\begin{bmatrix}x_{0}\\x_{1}\\\vdots \\x_{_{N-1}}\end{bmatrix}}}
圓周卷積最經常出現的快速傅里葉變換 的實現算法比如雷德演算法 之中。
性質
代數
各種卷積算子都滿足下列性質:
交換律
f
∗
g
=
g
∗
f
{\displaystyle f*g=g*f\,}
結合律
f
∗
(
g
∗
h
)
=
(
f
∗
g
)
∗
h
{\displaystyle f*(g*h)=(f*g)*h\,}
分配律
f
∗
(
g
+
h
)
=
(
f
∗
g
)
+
(
f
∗
h
)
{\displaystyle f*(g+h)=(f*g)+(f*h)\,}
數乘結合律
a
(
f
∗
g
)
=
(
a
f
)
∗
g
=
f
∗
(
a
g
)
{\displaystyle a(f*g)=(af)*g=f*(ag)\,}
其中
a
{\displaystyle a}
為任意實數 (或複數 )。
複數共軛
f
∗
g
¯
=
f
¯
∗
g
¯
{\displaystyle {\overline {f*g}}={\overline {f}}*{\overline {g}}}
微分有關
(
f
∗
g
)
′
=
f
′
∗
g
=
f
∗
g
′
{\displaystyle (f*g)'=f'*g=f*g'}
積分有關
如果
F
(
t
)
=
∫
−
∞
t
f
(
τ
)
d
τ
{\textstyle F(t)=\int _{-\infty }^{t}f(\tau )d\tau }
,並且
G
(
t
)
=
∫
−
∞
t
g
(
τ
)
d
τ
{\textstyle G(t)=\int _{-\infty }^{t}g(\tau )\,d\tau }
,則有:
(
F
∗
g
)
(
t
)
=
(
f
∗
G
)
(
t
)
=
∫
−
∞
t
(
f
∗
g
)
(
τ
)
d
τ
{\displaystyle (F*g)(t)=(f*G)(t)=\int _{-\infty }^{t}(f*g)(\tau )\,d\tau }
積分
如果
f
{\displaystyle f}
和
g
{\displaystyle g}
是可積分函數,則它們在整個空間上的卷積的積分,簡單的就是它們積分的乘積[ 14] :
∫
R
n
(
f
∗
g
)
(
t
)
d
n
t
=
(
∫
R
n
f
(
t
)
d
n
t
)
(
∫
R
n
g
(
t
)
d
n
t
)
{\displaystyle \int _{\mathbb {R} ^{n}}(f*g)(t)\,d^{n}t=\left(\int _{\mathbb {R} ^{n}}f(t)\,d^{n}t\right)\left(\int _{\mathbb {R} ^{n}}g(t)\,d^{n}t\right)}
這是富比尼定理 的結果。如果
f
{\displaystyle f}
和
g
{\displaystyle g}
只被假定為非負可測度函數,根據托內利定理 ,這也是成立的。
微分
在一元函數情況下,
f
{\displaystyle f}
和
g
{\displaystyle g}
的卷積的導數 有着:
d
d
t
(
f
∗
g
)
=
d
f
d
t
∗
g
=
f
∗
d
g
d
t
{\displaystyle {\frac {d}{dt}}(f*g)={\frac {df}{dt}}*g=f*{\frac {dg}{dt}}}
這裡的
d
d
t
{\displaystyle {\frac {d}{dt}}}
是微分算子 。更一般的說,在多元函數 的情況下,對偏導數 也有類似的公式:
∂
∂
t
i
(
f
∗
g
)
=
∂
f
∂
t
i
∗
g
=
f
∗
∂
g
∂
t
i
{\displaystyle {\frac {\partial }{\partial t_{i}}}(f*g)={\frac {\partial f}{\partial t_{i}}}*g=f*{\frac {\partial g}{\partial t_{i}}}}
這就有了一個特殊結論,卷積可以看作「光滑」運算:
f
{\displaystyle f}
和
g
{\displaystyle g}
的卷積可微分的次數,是
f
{\displaystyle f}
和
g
{\displaystyle g}
的總數。
這些恆等式成立的嚴格條件,為
f
{\displaystyle f}
和
g
{\displaystyle g}
是絕對可積分的,並且至少二者之一有絕對可積分(
L
1
{\displaystyle L^{1}}
)弱導數,這是Young卷積不等式 的結論。
在離散情況下,差分 算子
Δ
[
f
]
(
n
)
=
f
(
n
+
1
)
−
f
(
n
)
{\displaystyle \Delta [f](n)=f(n+1)-f(n)}
滿足類似的關係:
Δ
(
f
∗
g
)
=
(
Δ
f
)
∗
g
=
f
∗
(
Δ
g
)
{\displaystyle \Delta (f*g)=(\Delta f)*g=f*(\Delta g)}
卷積定理
卷積定理 指出[ 15] ,在適當的條件下,兩個函數(或信號 )的卷積的傅里葉變換 ,是它們的傅里葉變換的逐點乘積 。更一般的說,在一個域(比如時域 )中的卷積等於在其他域(比如頻域 )逐點 乘法。
設兩個函數
g
(
x
)
{\displaystyle g(x)}
和
h
(
x
)
{\displaystyle h(x)}
,分別具有傅里葉變換
G
(
s
)
{\displaystyle G(s)}
和
H
(
s
)
{\displaystyle H(s)}
:
G
(
s
)
≜
F
{
g
}
(
s
)
=
∫
−
∞
∞
g
(
x
)
e
−
i
2
π
s
x
d
x
,
s
∈
R
H
(
s
)
≜
F
{
h
}
(
s
)
=
∫
−
∞
∞
h
(
x
)
e
−
i
2
π
s
x
d
x
,
s
∈
R
{\displaystyle {\begin{aligned}G(s)&\triangleq {\mathcal {F}}\{g\}(s)=\int _{-\infty }^{\infty }g(x)e^{-i2\pi sx}\,dx,\quad s\in \mathbb {R} \\H(s)&\triangleq {\mathcal {F}}\{h\}(s)=\int _{-\infty }^{\infty }h(x)e^{-i2\pi sx}\,dx,\quad s\in \mathbb {R} \end{aligned}}}
這裡的
F
{\displaystyle {\mathcal {F}}}
算子 指示傅里葉變換 。
卷積定理聲稱:
F
{
g
∗
h
}
(
s
)
=
G
(
s
)
H
(
s
)
,
s
∈
R
{\displaystyle {\mathcal {F}}\{g*h\}(s)=G(s)H(s),\quad s\in \mathbb {R} }
F
{
g
⋅
h
}
(
s
)
=
G
(
s
)
∗
H
(
s
)
,
s
∈
R
{\displaystyle {\mathcal {F}}\{g\cdot h\}(s)=G(s)*H(s),\quad s\in \mathbb {R} }
應用逆傅里葉變換
F
−
1
{\displaystyle {\mathcal {F}}^{-1}}
產生推論:
(
g
∗
h
)
(
s
)
=
F
−
1
{
G
⋅
H
}
,
s
∈
R
{\displaystyle (g*h)(s)={\mathcal {F}}^{-1}\{G\cdot H\},\quad s\in \mathbb {R} }
(
g
⋅
h
)
(
s
)
=
F
−
1
{
G
∗
H
}
,
s
∈
R
{\displaystyle (g\cdot h)(s)={\mathcal {F}}^{-1}\{G*H\},\quad s\in \mathbb {R} }
這裡的算符
⋅
{\displaystyle \,\cdot \,}
指示逐點 乘法。
這一定理對拉普拉斯變換 、雙邊拉普拉斯變換 、Z變換 、梅林變換 和Hartley變換 等各種傅里葉變換的變體同樣成立。在調和分析 中還可以推廣到在局部緊緻的阿貝爾群 上定義的傅里葉變換。
周期卷積
對於周期為
P
{\displaystyle P}
的函數
g
P
(
x
)
{\displaystyle g_{_{P}}(x)}
和
h
P
(
x
)
{\displaystyle h_{_{P}}(x)}
,可以被表達為二者的周期求和 :
g
P
(
x
)
≜
∑
m
=
−
∞
∞
g
(
x
−
m
P
)
,
m
∈
Z
h
P
(
x
)
≜
∑
m
=
−
∞
∞
h
(
x
−
m
P
)
,
m
∈
Z
{\displaystyle {\begin{aligned}g_{_{P}}(x)\ &\triangleq \sum _{m=-\infty }^{\infty }g(x-mP),\quad m\in \mathbb {Z} \\h_{_{P}}(x)\ &\triangleq \sum _{m=-\infty }^{\infty }h(x-mP),\quad m\in \mathbb {Z} \end{aligned}}}
它們的傅里葉級數 係數 為:
G
[
k
]
≜
F
{
g
P
}
[
k
]
=
1
P
∫
P
g
P
(
x
)
e
−
i
2
π
k
x
/
P
d
x
,
k
∈
Z
H
[
k
]
≜
F
{
h
P
}
[
k
]
=
1
P
∫
P
h
P
(
x
)
e
−
i
2
π
k
x
/
P
d
x
,
k
∈
Z
{\displaystyle {\begin{aligned}G[k]&\triangleq {\mathcal {F}}\{g_{_{P}}\}[k]={\frac {1}{P}}\int _{P}g_{_{P}}(x)e^{-i2\pi kx/P}\,dx,\quad k\in \mathbb {Z} \\H[k]&\triangleq {\mathcal {F}}\{h_{_{P}}\}[k]={\frac {1}{P}}\int _{P}h_{_{P}}(x)e^{-i2\pi kx/P}\,dx,\quad k\in \mathbb {Z} \end{aligned}}}
這裡的
F
{\displaystyle {\mathcal {F}}}
算子指示傅里葉級數 積分 。
逐點乘積
g
P
(
x
)
⋅
h
P
(
x
)
{\displaystyle g_{_{P}}(x)\cdot h_{_{P}}(x)}
的周期也是
P
{\displaystyle P}
,它的傅里葉級數係數為:
F
{
g
P
⋅
h
P
}
[
k
]
=
(
G
∗
H
)
[
k
]
{\displaystyle {\mathcal {F}}\{g_{_{P}}\cdot h_{_{P}}\}[k]=(G*H)[k]}
周期卷積
(
g
P
∗
h
)
(
x
)
{\displaystyle (g_{_{P}}*h)(x)}
的周期也是
P
{\displaystyle P}
,周期卷積的卷積定理為:
F
{
g
P
∗
h
}
[
k
]
=
P
⋅
G
[
k
]
H
[
k
]
{\displaystyle {\mathcal {F}}\{g_{_{P}}*h\}[k]=\ P\cdot G[k]\ H[k]}
離散卷積
對於作為兩個連續函數採樣 的序列
g
[
n
]
{\displaystyle g[n]}
和
h
[
n
]
{\displaystyle h[n]}
,它們具有離散時間傅里葉變換
G
(
s
)
{\displaystyle G(s)}
和
H
(
s
)
{\displaystyle H(s)}
:
G
(
s
)
≜
F
{
g
}
(
s
)
=
∑
n
=
−
∞
∞
g
[
n
]
⋅
e
−
i
2
π
s
n
,
s
∈
R
H
(
s
)
≜
F
{
h
}
(
s
)
=
∑
n
=
−
∞
∞
h
[
n
]
⋅
e
−
i
2
π
s
n
,
s
∈
R
{\displaystyle {\begin{aligned}G(s)&\triangleq {\mathcal {F}}\{g\}(s)=\sum _{n=-\infty }^{\infty }g[n]\cdot e^{-i2\pi sn}\;,\quad s\in \mathbb {R} \\H(s)&\triangleq {\mathcal {F}}\{h\}(s)=\sum _{n=-\infty }^{\infty }h[n]\cdot e^{-i2\pi sn}\;,\quad s\in \mathbb {R} \end{aligned}}}
這裡的
F
{\displaystyle {\mathcal {F}}}
算子指示離散時間傅里葉變換 (DTFT)。
離散卷積的卷積定理為:
F
{
g
∗
h
}
(
s
)
=
G
(
s
)
H
(
s
)
{\displaystyle {\mathcal {F}}\{g*h\}(s)=\ G(s)H(s)}
離散周期卷積
對於周期為
N
{\displaystyle N}
的序列
g
N
[
n
]
{\displaystyle g_{_{N}}[n]}
和
h
N
[
n
]
{\displaystyle h_{_{N}}[n]}
:
g
N
[
n
]
≜
∑
m
=
−
∞
∞
g
[
n
−
m
N
]
,
m
,
n
∈
Z
h
N
[
n
]
≜
∑
m
=
−
∞
∞
h
[
n
−
m
N
]
,
m
,
n
∈
Z
{\displaystyle {\begin{aligned}g_{_{N}}[n]\ &\triangleq \sum _{m=-\infty }^{\infty }g[n-mN],\quad m,n\in \mathbb {Z} \\h_{_{N}}[n]\ &\triangleq \sum _{m=-\infty }^{\infty }h[n-mN],\quad m,n\in \mathbb {Z} \end{aligned}}}
相較於離散時間傅里葉變換
G
(
s
)
{\displaystyle G(s)}
和
H
(
s
)
{\displaystyle H(s)}
的周期是
1
{\displaystyle 1}
,它們是按間隔
1
/
N
{\displaystyle 1/N}
採樣
G
(
s
)
{\displaystyle G(s)}
和
H
(
s
)
{\displaystyle H(s)}
,並在
N
{\displaystyle N}
個採樣上進行了逆離散傅里葉變換 (DFT-1 或IDFT)的結果。
離散周期卷積
(
g
N
∗
h
)
[
n
]
{\displaystyle (g_{_{N}}*h)[n]}
的周期也是
N
{\displaystyle N}
。離散周期卷積定理為:
F
{
g
N
∗
h
}
[
k
]
=
F
{
g
N
}
[
k
]
⏟
G
(
k
/
N
)
⋅
F
{
h
N
}
[
k
]
⏟
H
(
k
/
N
)
,
k
,
n
∈
Z
{\displaystyle {\mathcal {F}}\{g_{_{N}}*h\}[k]=\ \underbrace {{\mathcal {F}}\{g_{_{N}}\}[k]} _{G(k/N)}\cdot \underbrace {{\mathcal {F}}\{h_{_{N}}\}[k]} _{H(k/N)},\quad k,n\in \mathbb {Z} }
這裡的
F
{\displaystyle {\mathcal {F}}}
算子指示長度
N
{\displaystyle N}
的離散傅里葉變換 (DFT)。
它有着推論:
(
g
N
∗
h
)
[
n
]
=
F
−
1
{
F
{
g
N
}
⋅
F
{
h
N
}
}
{\displaystyle (g_{_{N}}*h)[n]=\ {\mathcal {F}}^{-1}\{{\mathcal {F}}\{g_{_{N}}\}\cdot {\mathcal {F}}\{h_{_{N}}\}\}}
對於其非零時段小於等於
N
{\displaystyle N}
的
g
{\displaystyle g}
和
h
{\displaystyle h}
,離散圓周卷積的卷積定理為:
(
g
N
∗
h
)
[
n
]
=
F
−
1
{
F
{
g
}
⋅
F
{
h
}
}
{\displaystyle (g_{_{N}}*h)[n]=\ {\mathcal {F}}^{-1}\{{\mathcal {F}}\{g\}\cdot {\mathcal {F}}\{h\}\}}
推廣
卷積的概念還可以推廣到數列 、測度 以及廣義函數 上去。函數
f
,
g
{\displaystyle f,g}
是定義在
R
n
{\displaystyle \mathbb {R} ^{n}}
上的可測函數 (measurable function),
f
{\displaystyle f}
與
g
{\displaystyle g}
存在卷積並記作
f
∗
g
{\displaystyle f*g}
。如果函數不是定義在
R
n
{\displaystyle \mathbb {R} ^{n}}
上,可以把函數定義域以外的值都規定成零,這樣就變成一個定義在
R
n
{\displaystyle \mathbb {R} ^{n}}
上的函數。
若G 是有某m 測度 的群 (例如豪斯多夫空間 上哈爾測度 下局部緊緻 的拓撲群 ),對於G 上m -勒貝格可積 的實數 或複數 函數f 和g ,可定義它們的卷積:
(
f
∗
g
)
(
x
)
=
∫
G
f
(
y
)
g
(
x
y
−
1
)
d
m
(
y
)
{\displaystyle (f*g)(x)=\int _{G}f(y)g(xy^{-1})\,dm(y)\,}
對於這些群上定義的卷積同樣可以給出諸如卷積定理等性質,但是這需要對這些群的表示理論 以及調和分析的彼得-外爾定理 。
離散卷積的計算方法
計算卷積
f
[
n
]
∗
g
[
n
]
{\displaystyle f[n]*g[n]}
有三種主要的方法,分別為
直接計算(Direct Method)
快速傅立葉轉換 (FFT)
分段卷積(sectioned convolution)
方法1是直接利用定義來計算卷積,而方法2和3都是用到了FFT來快速計算卷積。也有不需要用到FFT的作法,如使用數論轉換 。
方法1:直接計算
y
[
n
]
=
f
[
n
]
∗
g
[
n
]
=
∑
m
=
0
M
−
1
f
[
n
−
m
]
g
[
m
]
{\displaystyle y[n]=f[n]*g[n]=\sum _{m=0}^{M-1}f[n-m]g[m]}
若
f
[
n
]
{\displaystyle f[n]}
和
g
[
n
]
{\displaystyle g[n]}
皆為實數信號,則需要
M
N
{\displaystyle MN}
個乘法。
若
f
[
n
]
{\displaystyle f[n]}
和
g
[
n
]
{\displaystyle g[n]}
皆為更一般性的複數信號,不使用複數乘法的快速演算法,會需要
4
M
N
{\displaystyle 4MN}
個乘法;但若使用複數乘法的快速演算法,則可簡化至
3
M
N
{\displaystyle 3MN}
個乘法。
因此,使用定義直接計算卷積的複雜度為
O
(
M
N
)
{\displaystyle O(MN)}
。
方法2:快速傅立葉轉換
概念:由於兩個離散信號在時域(time domain)做卷積相當於這兩個信號的離散傅立葉轉換在頻域(frequency domain)做相乘:
y
[
n
]
=
f
[
n
]
∗
g
[
n
]
↔
Y
[
f
]
=
F
[
f
]
G
[
f
]
{\displaystyle y[n]=f[n]*g[n]\leftrightarrow Y[f]=F[f]G[f]}
,可以看出在頻域的計算較簡單。
F
[
f
]
=
D
F
T
P
(
f
[
n
]
)
,
G
[
f
]
=
D
F
T
P
(
g
[
n
]
)
{\displaystyle F[f]=DFT_{P}(f[n]),G[f]=DFT_{P}(g[n])}
,於是
Y
[
f
]
=
D
F
T
P
(
f
[
n
]
)
D
F
T
P
(
g
[
n
]
)
{\displaystyle Y[f]=DFT_{P}(f[n])DFT_{P}(g[n])}
,最後再將頻域信號轉回時域,就完成了卷積的計算:
y
[
n
]
=
I
D
F
T
P
D
F
T
P
(
f
[
n
]
)
D
F
T
P
(
g
[
n
]
)
{\displaystyle y[n]=IDFT_{P}{DFT_{P}(f[n])DFT_{P}(g[n])}}
總共做了2次DFT和1次IDFT。
特別注意DFT和IDFT的點數
P
{\displaystyle P}
要滿足
P
≥
M
+
N
−
1
{\displaystyle P\geq M+N-1}
。
由於DFT有快速演算法FFT,所以運算量為
O
(
P
log
2
P
)
{\displaystyle O(P\log _{2}P)}
假設
P
{\displaystyle P}
點DFT的乘法量為
a
{\displaystyle a}
,
f
[
n
]
{\displaystyle f[n]}
和
g
[
n
]
{\displaystyle g[n]}
為一般性的複數信號,並使用複數乘法的快速演算法,則共需要
3
a
+
3
P
{\displaystyle 3a+3P}
個乘法。
方法3:分段卷積
概念:將
f
[
n
]
{\displaystyle f[n]}
切成好幾段(section),每一段分別和
g
[
n
]
{\displaystyle g[n]}
做卷積後,再將結果相加。
作法:先將
f
[
n
]
{\displaystyle f[n]}
切成每段長度為
L
{\displaystyle L}
的區段(
L
>
M
{\displaystyle L>M}
),假設共切成S段:
f
[
n
]
(
n
=
0
,
1
,
.
.
.
,
N
−
1
)
→
f
1
[
n
]
,
f
2
[
n
]
,
f
3
[
n
]
,
.
.
.
,
f
S
[
n
]
(
S
=
⌈
N
L
⌉
)
{\displaystyle f[n](n=0,1,...,N-1)\to f_{1}[n],f_{2}[n],f_{3}[n],...,f_{S}[n](S=\left\lceil {\frac {N}{L}}\right\rceil )}
Section 1:
f
1
[
n
]
=
f
[
n
]
,
n
=
0
,
1
,
.
.
.
,
L
−
1
{\displaystyle f_{1}[n]=f[n],n=0,1,...,L-1}
Section 2:
f
2
[
n
]
=
f
[
n
+
L
]
,
n
=
0
,
1
,
.
.
.
,
L
−
1
{\displaystyle f_{2}[n]=f[n+L],n=0,1,...,L-1}
⋮
{\displaystyle \vdots }
Section r:
f
r
[
n
]
=
f
[
n
+
(
r
−
1
)
L
]
,
n
=
0
,
1
,
.
.
.
,
L
−
1
{\displaystyle f_{r}[n]=f[n+(r-1)L],n=0,1,...,L-1}
⋮
{\displaystyle \vdots }
Section S:
f
S
[
n
]
=
f
[
n
+
(
S
−
1
)
L
]
,
n
=
0
,
1
,
.
.
.
,
L
−
1
{\displaystyle f_{S}[n]=f[n+(S-1)L],n=0,1,...,L-1}
,
f
[
n
]
{\displaystyle f[n]}
為各個section的和
f
[
n
]
=
∑
r
=
1
S
f
r
[
n
+
(
r
−
1
)
L
]
{\displaystyle f[n]=\sum _{r=1}^{S}f_{r}[n+(r-1)L]}
。
因此,
y
[
n
]
=
f
[
n
]
∗
g
[
n
]
=
∑
r
=
1
S
∑
m
=
0
M
−
1
f
r
[
n
+
(
r
−
1
)
L
−
m
]
g
[
m
]
{\displaystyle y[n]=f[n]*g[n]=\sum _{r=1}^{S}\sum _{m=0}^{M-1}f_{r}[n+(r-1)L-m]g[m]}
,
每一小段作卷積則是採用方法2,先將時域信號轉到頻域相乘,再轉回時域:
y
[
n
]
=
I
D
F
T
(
∑
r
=
1
S
∑
m
=
0
M
−
1
D
F
T
P
(
f
r
[
n
+
(
r
−
1
)
L
−
m
]
)
D
F
T
P
(
g
[
m
]
)
)
,
P
≥
M
+
L
−
1
{\displaystyle y[n]=IDFT(\sum _{r=1}^{S}\sum _{m=0}^{M-1}DFT_{P}(f_{r}[n+(r-1)L-m])DFT_{P}(g[m])),P\geq M+L-1}
。
總共只需要做
P
{\displaystyle P}
點FFT
2
S
+
1
{\displaystyle 2S+1}
次,因為
g
[
n
]
{\displaystyle g[n]}
只需要做一次FFT。
假設
P
{\displaystyle P}
點DFT的乘法量為
a
{\displaystyle a}
,
f
[
n
]
{\displaystyle f[n]}
和
g
[
n
]
{\displaystyle g[n]}
為一般性的複數信號,並使用複數乘法的快速演算法,則共需要
(
2
S
+
1
)
a
+
3
S
P
{\displaystyle (2S+1)a+3SP}
個乘法。
運算量:
N
L
3
(
L
+
M
−
1
)
[
log
2
(
L
+
M
−
1
)
+
1
]
{\displaystyle {\frac {N}{L}}3(L+M-1)[\log _{2}(L+M-1)+1]}
運算複雜度:
O
(
N
)
{\displaystyle O(N)}
,和
N
{\displaystyle N}
呈線性,較方法2小。
分為 Overlap-Add 和 Overlap-Save 兩種方法。
分段卷積: Overlap-Add
欲做
x
[
n
]
∗
h
[
n
]
{\displaystyle x[n]*h[n]}
的分段卷積分,
x
[
n
]
{\displaystyle x[n]}
長度為
N
{\displaystyle N}
,
h
[
n
]
{\displaystyle h[n]}
長度為
M
{\displaystyle M}
,
Step 1: 將
x
[
n
]
{\displaystyle x[n]}
每
L
{\displaystyle L}
分成一段
Step 2: 再每段
L
{\displaystyle L}
點後面添加
M
−
1
{\displaystyle M-1}
個零,變成長度
L
+
M
−
1
{\displaystyle L+M-1}
Step 3: 把
h
[
n
]
{\displaystyle h[n]}
添加
L
−
1
{\displaystyle L-1}
個零,變成長度
L
+
M
−
1
{\displaystyle L+M-1}
的
h
′
[
n
]
{\displaystyle h'[n]}
Step 4: 把每個
x
[
n
]
{\displaystyle x[n]}
的小段和
h
′
[
n
]
{\displaystyle h'[n]}
做快速卷積,也就是
I
D
F
T
L
+
M
−
1
{
D
F
T
L
+
M
−
1
(
x
[
n
]
)
D
F
T
L
+
M
−
1
(
h
′
[
n
]
)
}
{\displaystyle IDFT_{L+M-1}\{{DFT_{L+M-1}(x[n])DFT_{L+M-1}(h'[n])}\}}
,每小段會得到長度
L
+
M
−
1
{\displaystyle L+M-1}
的時域訊號
Step 5: 放置第
i
{\displaystyle i}
個小段的起點在位置
L
×
i
{\displaystyle L\times i}
上,
i
=
0
,
1
,
.
.
.
,
⌈
N
L
⌉
−
1
{\displaystyle i=0,1,...,\lceil {\frac {N}{L}}\rceil -1}
Step 6: 會發現在每一段的後面
M
−
1
{\displaystyle M-1}
點有重疊,將所有點都相加起來,顧名思義 Overlap-Add,最後得到結果
舉例來說:
x
[
n
]
=
[
1
,
2
,
3
,
4
,
5
,
−
1
,
−
2
,
−
3
,
−
4
,
−
5
,
1
,
2
,
3
,
4
,
5
]
{\displaystyle x[n]=[1,2,3,4,5,-1,-2,-3,-4,-5,1,2,3,4,5]}
, 長度
N
=
15
{\displaystyle N=15}
h
[
n
]
=
[
1
,
2
,
3
]
{\displaystyle h[n]=[1,2,3]}
, 長度
M
=
3
{\displaystyle M=3}
令
L
=
5
{\displaystyle L=5}
令
L
=
5
{\displaystyle L=5}
切成三段,分別為
x
0
[
n
]
,
x
1
[
n
]
,
x
2
[
n
]
{\displaystyle x_{0}[n],x_{1}[n],x_{2}[n]}
, 每段填
M
−
1
{\displaystyle M-1}
個零,並將
h
[
n
]
{\displaystyle h[n]}
填零至長度
L
+
M
−
1
{\displaystyle L+M-1}
將每一段做
I
D
F
T
L
+
M
−
1
{
D
F
T
L
+
M
−
1
(
x
[
n
]
)
D
F
T
L
+
M
−
1
(
h
′
[
n
]
)
}
{\displaystyle IDFT_{L+M-1}\{{DFT_{L+M-1}(x[n])DFT_{L+M-1}(h'[n])}\}}
若將每小段擺在一起,可以注意到第一段的範圍是
0
∼
6
{\displaystyle 0\thicksim 6}
,第二段的範圍是
5
∼
11
{\displaystyle 5\thicksim 11}
,第三段的範圍是
10
∼
16
{\displaystyle 10\thicksim 16}
,三段的範圍是有重疊的
最後將三小段加在一起,並將結果和未分段的卷積做比較,上圖是分段的結果,下圖是沒有分段並利用快速卷積所算出的結果,驗證兩者運算結果相同。
分段卷積: Overlap-Save
欲做
x
[
n
]
∗
h
[
n
]
{\displaystyle x[n]*h[n]}
的分段卷積分,
x
[
n
]
{\displaystyle x[n]}
長度為
N
{\displaystyle N}
,
h
[
n
]
{\displaystyle h[n]}
長度為
M
{\displaystyle M}
,
Step 1: 將
x
[
n
]
{\displaystyle x[n]}
前面填
M
−
1
{\displaystyle M-1}
個零
Step 2: 第一段
i
=
0
{\displaystyle i=0}
, 從新的
x
[
n
]
{\displaystyle x[n]}
中
L
×
i
−
(
M
−
1
)
×
i
{\displaystyle L\times i-(M-1)\times i}
取到
L
×
(
i
+
1
)
−
(
M
−
1
)
×
i
−
1
{\displaystyle L\times (i+1)-(M-1)\times i-1}
總共
L
{\displaystyle L}
點當做一段,因此每小段會重複取到前一小段的
M
−
1
{\displaystyle M-1}
點,取到新的一段全為零為止
Step 3: 把
h
[
n
]
{\displaystyle h[n]}
添加
L
−
M
{\displaystyle L-M}
個零,變成長度
L
{\displaystyle L}
的
h
′
[
n
]
{\displaystyle h'[n]}
Step 4: 把每個
x
[
n
]
{\displaystyle x[n]}
的小段和
h
′
[
n
]
{\displaystyle h'[n]}
做快速卷積,也就是
I
D
F
T
L
{
D
F
T
L
(
x
[
n
]
)
D
F
T
L
(
h
′
[
n
]
)
}
{\displaystyle IDFT_{L}\{{DFT_{L}(x[n])DFT_{L}(h'[n])}\}}
,每小段會得到長度
L
{\displaystyle L}
的時域訊號
Step 5: 對於每個
i
{\displaystyle i}
小段,只會保留末端的
L
−
(
M
−
1
)
{\displaystyle L-(M-1)}
點,因此得名 Overlap-Save
Step 6: 將所有保留的點合再一起,得到最後結果
舉例來說:
x
[
n
]
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
]
{\displaystyle x[n]=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]}
, 長度
N
=
15
{\displaystyle N=15}
h
[
n
]
=
[
1
,
2
,
3
]
{\displaystyle h[n]=[1,2,3]}
, 長度
M
=
3
{\displaystyle M=3}
令
L
=
7
{\displaystyle L=7}
將
x
[
n
]
{\displaystyle x[n]}
前面填
M
−
1
{\displaystyle M-1}
個零以後,按照 Step 2 的方式分段,可以看到每一段都重複上一段的
M
−
1
{\displaystyle M-1}
點
再將每一段做
I
D
F
T
L
{
D
F
T
L
(
x
[
n
]
)
D
F
T
L
(
h
′
[
n
]
)
}
{\displaystyle IDFT_{L}\{{DFT_{L}(x[n])DFT_{L}(h'[n])}\}}
以後可以得到
保留每一段末端的
L
−
(
M
−
1
)
{\displaystyle L-(M-1)}
點,擺在一起以後,可以注意到第一段的範圍是
0
∼
4
{\displaystyle 0\thicksim 4}
,第二段的範圍是
5
∼
9
{\displaystyle 5\thicksim 9}
,第三段的範圍是
10
∼
14
{\displaystyle 10\thicksim 14}
,第四段的範圍是
15
∼
16
{\displaystyle 15\thicksim 16}
,四段的範圍是沒有重疊的
將結果和未分段的卷積做比較,下圖是分段的結果,上圖是沒有分段並利用快速卷積所算出的結果,驗證兩者運算結果相同。
至於為什麼要把前面
M
−
1
{\displaystyle M-1}
丟掉?
以下以一例子來闡述:
x
[
n
]
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
]
{\displaystyle x[n]=[1,2,3,4,5,6,7,8,9,10]}
, 長度
L
=
10
{\displaystyle L=10}
,
h
[
n
]
=
[
1
,
2
,
3
,
4
,
5
]
{\displaystyle h[n]=[1,2,3,4,5]}
, 長度
M
=
5
{\displaystyle M=5}
,
第一條藍線代表
y
{\displaystyle y}
軸,而兩條藍線之間代表長度
L
{\displaystyle L}
,是在做快速摺積時的週期
當在做快速摺積時
I
D
F
T
L
{
D
F
T
L
(
x
[
n
]
)
D
F
T
L
(
h
′
[
n
]
)
}
{\displaystyle IDFT_{L}\{{DFT_{L}(x[n])DFT_{L}(h'[n])}\}}
,是把訊號視為週期
L
{\displaystyle L}
,在時域上為循環摺積分,
而在一開始前
M
−
1
{\displaystyle M-1}
點所得到的值,是
h
[
0
]
,
h
[
6
]
,
h
[
7
]
,
h
[
8
]
,
h
[
9
]
{\displaystyle h[0],h[6],h[7],h[8],h[9]}
和
x
[
0
]
,
x
[
6
]
,
x
[
7
]
,
x
[
8
]
,
x
[
9
]
{\displaystyle x[0],x[6],x[7],x[8],x[9]}
內積的值,
然而
h
[
6
]
,
h
[
7
]
,
h
[
8
]
,
h
[
9
]
{\displaystyle h[6],h[7],h[8],h[9]}
這
M
−
1
{\displaystyle M-1}
個值應該要為零,以往在做快速摺積時長度為
L
+
M
−
1
{\displaystyle L+M-1}
時不會遇到這些問題,
而今天因為在做快速摺積時長度為
L
{\displaystyle L}
才會把這
M
−
1
{\displaystyle M-1}
點算進來,因此我們要丟棄這
M
−
1
{\displaystyle M-1}
點內積的結果
為了要丟棄這
M
−
1
{\displaystyle M-1}
點內積的結果,位移
h
[
−
n
]
{\displaystyle h[-n]}
M
−
1
{\displaystyle M-1}
點,並把位移以後內積合的值才算有效。
應用時機
以上三種方法皆可用來計算卷積,其差別在於所需總體乘法量不同。基於運算量以及效率的考量,在計算卷積時,通常會選擇所需總體乘法量較少的方法。
以下根據
f
[
n
]
{\displaystyle f[n]}
和
g
[
n
]
{\displaystyle g[n]}
的長度(
N
,
M
{\displaystyle N,M}
)分成5類,並列出適合使用的方法:
M
{\displaystyle M}
為一非常小的整數 - 直接計算
M
≪
N
{\displaystyle M\ll N}
- 分段卷積
M
≈
N
{\displaystyle M\approx N}
- 快速傅里葉變換
M
≫
N
{\displaystyle M\gg N}
- 分段卷積
N
{\displaystyle N}
為一非常小的整數 - 直接計算
基本上,以上只是粗略的分類。在實際應用時,最好還是算出三種方法所需的總乘法量,再選擇其中最有效率的方法來計算卷積。
例子
Q1:當
N
=
2000
,
M
=
17
{\displaystyle N=2000,M=17}
,適合用哪種方法計算卷積?
Ans:
方法1:所需乘法量為
3
M
N
=
102000
{\displaystyle 3MN=102000}
方法2:
P
≥
M
+
N
−
1
=
2016
{\displaystyle P\geq M+N-1=2016}
,而2016點的DFT最少乘法數
a
=
12728
{\displaystyle a=12728}
,所以總乘法量為
3
(
a
+
P
)
=
44232
{\displaystyle 3(a+P)=44232}
方法3:
若切成8塊(
S
=
8
{\displaystyle S=8}
),則
L
=
250
,
P
≥
M
+
L
−
1
=
266
{\displaystyle L=250,P\geq M+L-1=266}
。選
P
=
288
{\displaystyle P=288}
,則總乘法量為
(
2
S
+
1
)
a
+
3
S
P
=
26632
{\displaystyle (2S+1)a+3SP=26632}
,比方法1和2少了很多。
但是若要找到最少的乘法量,必須依照以下步驟
(1)先找出
L
{\displaystyle L}
:解
L
{\displaystyle L}
:
∂
N
L
3
(
L
+
M
−
1
)
[
log
2
(
L
+
M
−
1
)
+
1
]
∂
L
=
0
{\displaystyle {\frac {\partial {{\frac {N}{L}}3(L+M-1)[\log _{2}(L+M-1)+1]}}{\partial L}}=0}
(2)由
P
≥
L
+
M
−
1
{\displaystyle P\geq L+M-1}
算出點數在
P
{\displaystyle P}
附近的DFT所需最少的乘法量,選擇DFT的點數
(3)最後由
L
=
P
+
1
−
M
{\displaystyle L=P+1-M}
算出
L
o
p
t
{\displaystyle L_{opt}}
因此,
(1)由運算量對
L
{\displaystyle L}
的偏微分為0而求出
L
=
85
{\displaystyle L=85}
(2)
P
≥
L
+
M
−
1
=
101
{\displaystyle P\geq L+M-1=101}
,所以選擇101點DFT附近點數乘法量最少的點數
P
=
96
{\displaystyle P=96}
或
P
=
120
{\displaystyle P=120}
。
(3-1)當
P
=
96
→
a
=
280
,
L
=
P
+
1
−
M
=
80
→
S
=
25
{\displaystyle P=96\to a=280,L=P+1-M=80\to S=25}
,總乘法量為
(
2
S
+
1
)
a
+
3
S
P
=
21480
{\displaystyle (2S+1)a+3SP=21480}
。
(3-2)當
P
=
120
→
a
=
380
,
L
=
P
+
1
−
M
=
104
→
S
=
20
{\displaystyle P=120\to a=380,L=P+1-M=104\to S=20}
,總乘法量為
(
2
S
+
1
)
a
+
3
S
P
=
22780
{\displaystyle (2S+1)a+3SP=22780}
。
由此可知,切成20塊會有較好的效率,而所需總乘法量為21480。
因此,當
N
=
2000
,
M
=
17
{\displaystyle N=2000,M=17}
,所需總乘法量:分段卷積<快速傅立葉轉換<直接計算。故,此時選擇使用分段卷積來計算卷積最適合。
Q2:當
N
=
1024
,
M
=
3
{\displaystyle N=1024,M=3}
,適合用哪種方法計算卷積?
Ans:
方法1:所需乘法量為
3
M
N
=
9216
{\displaystyle 3MN=9216}
方法2:
P
≥
M
+
N
−
1
=
1026
{\displaystyle P\geq M+N-1=1026}
,選擇1026點DFT附近點數乘法量最少的點數,
→
P
=
1152
,
a
=
7088
{\displaystyle \to P=1152,a=7088}
。
因此,所需乘法量為
3
(
a
+
P
)
=
24342
{\displaystyle 3(a+P)=24342}
方法3:
(1)由運算量對
L
{\displaystyle L}
的偏微分為0而求出
L
=
5
{\displaystyle L=5}
(2)
P
≥
L
+
M
−
1
=
7
{\displaystyle P\geq L+M-1=7}
,所以選擇7點DFT附近點數乘法量最少的點數
P
=
8
{\displaystyle P=8}
或
P
=
6
{\displaystyle P=6}
或
P
=
4
{\displaystyle P=4}
。
(3-1)當
P
=
8
→
a
=
4
,
L
=
P
+
1
−
M
=
6
→
S
=
171
{\displaystyle P=8\to a=4,L=P+1-M=6\to S=171}
,總乘法量為
(
2
S
+
1
)
a
+
3
S
P
=
5476
{\displaystyle (2S+1)a+3SP=5476}
。
(3-2)當
P
=
6
→
a
=
4
,
L
=
P
+
1
−
M
=
4
→
S
=
256
{\displaystyle P=6\to a=4,L=P+1-M=4\to S=256}
,總乘法量為
(
2
S
+
1
)
a
+
3
S
P
=
6660
{\displaystyle (2S+1)a+3SP=6660}
。
(3-3)當
P
=
4
→
a
=
0
,
L
=
P
+
1
−
M
=
2
→
S
=
512
{\displaystyle P=4\to a=0,L=P+1-M=2\to S=512}
,總乘法量為
(
2
S
+
1
)
a
+
3
S
P
=
6144
{\displaystyle (2S+1)a+3SP=6144}
。
由此可知,切成171塊會有較好的效率,而所需總乘法量為5476。
因此,當
N
=
1024
,
M
=
3
{\displaystyle N=1024,M=3}
,所需總乘法量:分段卷積<直接計算<快速傅立葉轉換。故,此時選擇使用分段卷積來計算卷積最適合。
雖然當
M
{\displaystyle M}
是個很小的正整數時,大致上適合使用直接計算。但實際上還是將3個方法所需的乘法量都算出來,才能知道用哪種方法可以達到最高的效率。
Q3:當
N
=
1024
,
M
=
600
{\displaystyle N=1024,M=600}
,適合用哪種方法計算卷積?
Ans:
方法1:所需乘法量為
3
M
N
=
1843200
{\displaystyle 3MN=1843200}
方法2:
P
≥
M
+
N
−
1
=
1623
{\displaystyle P\geq M+N-1=1623}
,選擇1026點DFT附近點數乘法量最少的點數,
→
P
=
2016
,
a
=
12728
{\displaystyle \to P=2016,a=12728}
。
因此,所需乘法量為
3
(
a
+
P
)
=
44232
{\displaystyle 3(a+P)=44232}
方法3:
(1)由運算量對
L
{\displaystyle L}
的偏微分為0而求出
L
=
1024
{\displaystyle L=1024}
(2)
P
≥
L
+
M
−
1
=
1623
{\displaystyle P\geq L+M-1=1623}
,所以選擇1623點DFT附近點數乘法量最少的點數
P
=
2016
{\displaystyle P=2016}
。
(3)當
P
=
2016
→
a
=
12728
,
L
=
P
+
1
−
M
=
1417
→
S
=
1
{\displaystyle P=2016\to a=12728,L=P+1-M=1417\to S=1}
,總乘法量為
(
2
S
+
1
)
a
+
3
S
P
=
44232
{\displaystyle (2S+1)a+3SP=44232}
。
由此可知,此時切成一段,就跟方法2一樣,所需總乘法量為44232。
因此,當
N
=
1024
,
M
=
600
{\displaystyle N=1024,M=600}
,所需總乘法量:快速傅立葉轉換 = 分段卷積<直接計算。故,此時選擇使用分段卷積來計算卷積最適合。
應用
高斯模糊 可被用來從半色調 印刷品復原出光滑灰度數字圖像。
卷積在科學、工程和數學上都有很多應用:
參見
引用
^ Smith, Stephen W. 13.Convolution . The Scientist and Engineer's Guide to Digital Signal Processing 1. California Technical Publishing. 1997 [22 April 2016] . ISBN 0-9660176-3-3 . (原始內容存檔 於2023-06-26).
^ Irwin, J. David . 4.3. The Industrial Electronics Handbook 1. Boca Raton, FL: CRC Press. 1997: 75 . ISBN 0-8493-8343-9 .
^ Dominguez-Torres, p 2
^ 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, 1797–1800. Dominguez-Torres, p 4
^
R. N. Bracewell, Early work on imaging theory in radio astronomy , W. T. Sullivan (編), The Early Years of Radio Astronomy: Reflections Fifty Years After Jansky's Discovery, Cambridge University Press: 172, 2005, ISBN 978-0-521-61602-7
^
John Hilton Grace and Alfred Young, The algebra of invariants , Cambridge University Press: 40, 1903
^
Leonard Eugene Dickson, Algebraic invariants , J. Wiley: 85, 1914
^ (Stein & Weiss 1971 ,Theorem 1.3)
^ Crutchfield, Steve, The Joy of Convolution , Johns Hopkins University, October 12, 2010 [November 21, 2010] , (原始內容存檔 於2013-09-11)
^
Jeruchim, Michel C.; Balaban, Philip; Shanmugan, K. Sam. Simulation of Communication Systems: Modeling, Methodology and Techniques 2nd. New York: Kluwer Academic Publishers. October 2000: 73–74. ISBN 0-30-646267-2 .
^ 11.0 11.1
Udayashankara, V. Real Time Digital Signal Processing. India: Prentice-Hall. June 2010: 189. ISBN 978-8-12-034049-7 .
^ Priemer, Roland. Introductory Signal Processing . Advanced Series in Electrical and Computer Engineering 6 . Teaneck,N.J.: World Scientific Pub Co Inc. July 1991: 286–289 [2023-10-26 ] . ISBN 9971-50-919-9 . (原始內容存檔 於2023-10-11).
^ Damelin & Miller 2011 ,第219頁
^ Weisstein, Eric W. Convolution . mathworld.wolfram.com. [2021-09-22 ] . (原始內容存檔 於2002-01-14) (英語) .
^ Weisstein, Eric W. From MathWorld--A Wolfram Web Resource . [2023-10-23 ] . (原始內容存檔 於2000-07-11).
^ Zhang, Yingjie; Soon, Hong Geok; Ye, Dongsen; Fuh, Jerry Ying Hsi; Zhu, Kunpeng. Powder-Bed Fusion Process Monitoring by Machine Vision With Hybrid Convolutional Neural Networks . IEEE Transactions on Industrial Informatics. September 2020, 16 (9): 5769–5779 [2023-10-24 ] . ISSN 1941-0050 . S2CID 213010088 . doi:10.1109/TII.2019.2956078 . (原始內容存檔 於2023-07-31).
^ Chervyakov, N.I.; Lyakhov, P.A.; Deryabin, M.A.; Nagornov, N.N.; Valueva, M.V.; Valuev, G.V. Residue Number System-Based Solution for Reducing the Hardware Cost of a Convolutional Neural Network . Neurocomputing. September 2020, 407 : 439–453 [2023-10-24 ] . S2CID 219470398 . doi:10.1016/j.neucom.2020.04.018 . (原始內容存檔 於2023-06-29) (英語) . Convolutional neural networks represent deep learning architectures that are currently used in a wide range of applications, including computer vision, speech recognition, time series analysis in finance, and many others.
^ Atlas, Homma, and Marks. An Artificial Neural Network for Spatio-Temporal Bipolar Patterns: Application to Phoneme Classification (PDF) . Neural Information Processing Systems (NIPS 1987). (原始內容存檔 (PDF) 於2021-04-14).
延伸閱讀
Bracewell, R., The Fourier Transform and Its Applications 2nd, McGraw–Hill, 1986, ISBN 0-07-116043-4 .
Damelin, S.; Miller, W., The Mathematics of Signal Processing, Cambridge University Press, 2011, ISBN 978-1107601048
Diggle, P. J., A kernel method for smoothing point process data, Journal of the Royal Statistical Society, Series C, 1985, 34 (2): 138–147, JSTOR 2347366 , S2CID 116746157 , doi:10.2307/2347366
Dominguez-Torres, Alejandro (Nov 2, 2010). "Origin and history of convolution". 41 pgs. http://www.slideshare.net/Alexdfar/origin-adn-history-of-convolution (頁面存檔備份 ,存於網際網路檔案館 ). Cranfield, Bedford MK43 OAL, UK. Retrieved Mar 13, 2013.
Ghasemi, S. Hooman; Nowak, Andrzej S., Reliability Index for Non-normal Distributions of Limit State Functions, Structural Engineering and Mechanics, 2017, 62 (3): 365–372, doi:10.12989/sem.2017.62.3.365
Grinshpan, A. Z., An inequality for multiple convolutions with respect to Dirichlet probability measure, Advances in Applied Mathematics, 2017, 82 (1): 102–119, doi:10.1016/j.aam.2016.08.001
Hewitt, Edwin; Ross, Kenneth A., Abstract harmonic analysis. Vol. I, Grundlehren der Mathematischen Wissenschaften [Fundamental Principles of Mathematical Sciences] 115 2nd, Berlin, New York: Springer-Verlag , 1979, ISBN 978-3-540-09434-0 , MR 0551496 .
Hewitt, Edwin; Ross, Kenneth A., Abstract harmonic analysis. Vol. II: Structure and analysis for compact groups. Analysis on locally compact Abelian groups, Die Grundlehren der mathematischen Wissenschaften, Band 152, Berlin, New York: Springer-Verlag , 1970, MR 0262773 .
Hörmander, L. , The analysis of linear partial differential operators I, Grundl. Math. Wissenschaft. 256 , Springer, 1983, ISBN 3-540-12104-8 , MR 0717035 , doi:10.1007/978-3-642-96750-4 .
Kassel, Christian, Quantum groups , Graduate Texts in Mathematics 155 , Berlin, New York: Springer-Verlag , 1995, ISBN 978-0-387-94370-1 , MR 1321145 , doi:10.1007/978-1-4612-0783-2 .
Knuth, Donald , Seminumerical Algorithms 3rd., Reading, Massachusetts: Addison–Wesley, 1997, ISBN 0-201-89684-2 .
Template:Narici Beckenstein Topological Vector Spaces
Reed, Michael; Simon, Barry , Methods of modern mathematical physics. II. Fourier analysis, self-adjointness, New York-London: Academic Press Harcourt Brace Jovanovich, Publishers: xv+361, 1975, ISBN 0-12-585002-6 , MR 0493420
Rudin, Walter , Fourier analysis on groups, Interscience Tracts in Pure and Applied Mathematics 12 , New York–London: Interscience Publishers, 1962, ISBN 0-471-52364-X , MR 0152834 .
Template:Schaefer Wolff Topological Vector Spaces
Stein, Elias ; Weiss, Guido, Introduction to Fourier Analysis on Euclidean Spaces , Princeton University Press, 1971, ISBN 0-691-08078-X .
Sobolev, V.I., Convolution of functions , Hazewinkel, Michiel (編), 数学百科全书 , Springer , 2001, ISBN 978-1-55608-010-4 .
Strichartz, R., A Guide to Distribution Theory and Fourier Transforms, CRC Press, 1994, ISBN 0-8493-8273-4 .
Titchmarsh, E , Introduction to the theory of Fourier integrals 2nd, New York, N.Y.: Chelsea Pub. Co., 19481986, ISBN 978-0-8284-0324-5 .
Template:Trèves François Topological vector spaces, distributions and kernels
Uludag, A. M. , On possible deterioration of smoothness under the operation of convolution, J. Math. Anal. Appl., 1998, 227 (2): 335–358, doi:10.1006/jmaa.1998.6091
von zur Gathen, J.; Gerhard, J ., Modern Computer Algebra, Cambridge University Press, 2003, ISBN 0-521-82646-2 .
Oppenheim, Alan V. ; Schafer, Ronald W. ; Buck, John R. Discrete-time signal processing 2nd. Upper Saddle River,N.J.: Prentice Hall. 1999: 548 , 571. ISBN 0-13-754920-2 .
McGillem, Clare D.; Cooper, George R. Continuous and Discrete Signal and System Analysis 2. Holt, Rinehart and Winston. 1984. ISBN 0-03-061703-0 .
外部連結
可微分計算
概論 概念 應用 硬件 軟件庫 實現
人物 組織 架構
主題
分類