如果 x 和 c 都是长度为 n 的向量,那么它们循环卷积的结果 y 就有
yk=(x⊗c)k=i=0∑n−1xick−i
其中 ck−i 代表循环移位。
将 c 的循环移位写成矩阵的形式
C=c0c1⋮cn−2cn−1cn−1c0c1cn−2…cn−1c0⋱…c2⋱⋱c1c1c2⋮cn−1c0
于是就有
y=Cx
举个例子:
16141614=12344123341223411212
其中 C 可以用另一种方式表示:
C=f(P)=c0I+c1P+c2P2+…+cn−1Pn−1
P 矩阵是一个置换矩阵,也被称作循环矩阵。
P=010⋮000⋱⋱………⋱⋱000⋮0110⋮00
它可以表示为
(0IkIn−k0)
可以得到 ∣P−λIn∣=λn−1,也可以通过 Pn=I 来得到 λn=1。根据 e−j2πk=1,解出来得到 λk=en−j2πk=ωk,计算可以得到 Pαk=ωk(αk(n−1),αk(0),⋯,αk(n−3),αk(n−2))T。
这里不明白 ω=e−j2π/n,还是 ω=ej2π/n,感觉是一样的。
从而有 αk(i)=ωkαk(i−1) 前一项乘以 ωk 等于后一项,最后一项乘以 ωk 得到第一项。如果 αk=(1,ωk,ω2k,⋯,ω(n−1)k)T 就正好满足,其中有 ωkn=ωk0=1 。
可以得到 P 的特征向量组成的矩阵:
F=1111⋮11ωω2ω3⋮ωn−11ω2ω4ω6⋮ω2(n−1)1ω3ω6ω9⋮ω3(n−1)⋯⋯⋯⋯⋱⋯1ωn−1ω2(n−1)ω3(n−1)⋮ω(n−1)(n−1)
C 矩阵的特征向量也是 αk,但是特征值变为
λk∗=c0+c1λk+c2λk2+⋯+cn−1λkn−1=(c0,c1,⋯,cn−1)T(1,λk1,λk2,⋯,λkn−1)=(c0,c1,⋯,cn−1)T(1,ωk,ω2k,⋯,ω(n−1)k)=(c0,c1,⋯,cn−1)Tαk
可以得到特征值组成的向量为 Fc,将 C 对角化,得到:
C=F−1diag(Fc)F
这时候如果将 y=Cx 中的 x 投影到 F 列(行)空间里,也就是 C 的特征向量张成的空间,可以得到 y 在这个空间中的坐标。
如果将 x 和 y 也写成类似于 C 的循环矩阵,可以得到:
Y=CX
然后做对角化可以得到:
F−1diag(Fy)F=F−1diag(Fc)FF−1diag(Fx)F=F−1diag(Fc)diag(Fx)F
于是可以得到卷积定理:
Fy=Fc×Fx=F(c⊗x)
这里 × 表示 element-wise multiplication。
这就是著名的卷积定理,时域卷积对应着频域的乘积,而频域是向量构成的循环矩阵的特征值。
[1] Matrix Methods in Data Analysis, Signal Processing, and Machine Learning
[2] Circulant matrix
[3] Discrete Fourier transform
[4] Circular convolution