Discrete Convolution
给定两个向量,f∈R2n+1,g∈R2m+1
f=[f−n,⋯,f−1,f0,f1,⋯,fn]g=[g−n,⋯,g−1,g0,g1,⋯,gn]
其卷积f∗g∈R2(m+n)+1为:
(f∗g)k=i=−n∑nfigk−ifor k=−(m+n),⋯,−1,0,1,⋯(m+n)
或者可以表示为:
(f∗g)k=i=−n∑nj=−m∑mfigjs.t. i+j=k
Example
性质
- f∗g=g∗f
- f∗(g∗h)=(f∗g)∗h
- f∗(g+h)=f∗g+f∗h
- 令δ=[1],则f∗δ=f
计算复杂度
- 如果n≤m,共有2(m+n)+1个元素,每个元素要计算n次,计算复杂度为O((m+n)n)
- 如果n>m,相似的,计算复杂度为O((m+n)m)
因此计算复杂度为O((m+n)min{m,n})
Circular Convolution
给定
ab=[a0,⋯,aN−1]⊤∈RN=[b0,⋯,bN−1]⊤∈RN
循环卷积定义为:
(a⊛b)k=l=0∑N−1albk−lfor k=0,1,⋯,N−1where bk−l=b(k−l)+Nif −N+1≤k−l≤−1
example
性质
- a⊛b=b⊛a
- a⊛(b⊛c)=(a⊛b)⊛c
- a⊛(b+c)=a⊛b+a⊛c
Theorem
对于任意f∈R2n+1,g∈R2m+1,可以将f∗g转化为a⊛b
a=[f0,f1,⋯,fn,0,⋯,02m个0,f−n,⋯,f−2,f−1]b=[g0,g1,⋯,gm,2n个00,⋯,0,g−m,⋯,g−2,g−1]
al=⎩⎨⎧flfl−N0if l=0,1,⋯,nif l=N−n,⋯,N−1otherwise
由于bl是"periodic extended"(参考example),因此bl=bl+N=bl−N
bl=⎩⎨⎧gl+Nglgl−Ngl/gl−N/gl+N/0if l∈[−N+1,−N+m]if l∈[−m,m]if l∈[N−m,N−1]if l∈[−N+m+1,−m]∪[m+1,N−m−1]
[g1,⋯,gm,0,⋯,0,⋯g−m,⋯,g−2,g−1,∣g0,g1,⋯,gm,0,⋯,0,g−m,⋯,g−2,g−1]
其中 l∈[−N+1,−m−1]的部分有:bl=bl+N=gl+N
对于 l∈[−m,−1]的部分有:bl=bl+N=gl
对于 l∈[0,N−m−1]的部分有:bl=gl
对于 l∈[N−m,N−1]的部分有:bl=gl−N
注意到,对于0,其既可以等于gl+N,也可以等于gl−N,也可以等于gl,因为都超出了[−m,m]的范围,gl自动取0
(a⊛b)k=l=0∑N−1albk−l=l=0∑nalbl−k+l=N−n∑N−1albl−k
对于k∈[0,m+n]
l=0∑nalbk−ll=N−n∑N−1albk−l=l=0∑nflgk−l=l=N−n∑N−1fl−Ngk−l+N=l=N−n∑N−1fl−Ngk−(l−N)=l=−n∑−1flgk−lk−l∈[−n,m+n]k−l∈[−N+1,−m−1]
因此,
(a⊛b)k=l=0∑nalbl−k+l=N−n∑N−1albl−k=−n∑nflgk−l=(f∗g)k
对于k∈[m+n+1,N−1]
l=0∑nalbk−ll=N−n∑N−1albk−l=l=0∑nflgk−l−N=l=0∑nflg(k−N)−l=l=N−n∑N−1fl−Ngk−l=l−N→l~l~=−n∑−1fl~g(k−N)−l~k−l∈[m+1,N−1]k−l∈[−m−n+1,n−1]
因此
(a⊛b)k=l=0∑nalbl−k+l=N−n∑N−1albl−k=−n∑nflg(k−N)−l=(f∗g)k−N
合并后:
(f∗g)=[(f∗g)−m−n,⋯,(f∗g)−1,(f∗g)0,(f∗g)1,⋯,(f∗g)m+n]⊤=[(a⊛b)m+n+1,⋯,(a⊛b)N−1,(a⊛b)0,(a⊛b)1,⋯,(a⊛b)m+n]⊤
证毕。