Toeplitz 矩阵对角化

Toeplitz 矩阵是一种比较特殊的矩阵:其中任何一条对角线的元素取相同的值,即

An=a0a1a2ana1a0a1an1a2a1a0a1anan+1a1a0

这里不再展开证明。
Toeplitz 矩阵可以被Fourier矩阵对角化,即有
An=FHnΛFn

F 的元素为
[Fn]ij=1nej2πik/n,0<=i,j<=n1

Λ 是n阶对角矩阵。

生成一个循环矩阵

 T = toeplitz([2 1 0 0 1]);

An=2100112100012100012110012

生成Fourier矩阵

F = dftmtx(5)

F=1.00001.00001.00001.00001.00001.00000.30900.9511i0.80900.5878i0.8090+0.5878i0.3090+0.9511i1.00000.80900.5878i0.3090+0.9511i0.30900.9511i0.8090+0.5878i1.00000.8090+0.5878i0.30900.9511i0.3090+0.9511i0.80900.5878i1.00000.3090+0.9511i0.8090+0.5878i0.80900.5878i0.30900.9511i

对角化

Λ=FTconj(F)/5;

Λ=4.0000000000.0000i2.6180+0.0000i0.0000+0.0000i0.00000.0000i0.00000.0000i00.00000.38200.00000.000000.00000.00000.38200.00000+0.0000i0.0000+0.0000i0.0000+0.0000i0.00000.0000i2.61800.0000i

对角线上的元素便是 Toeplitz 矩阵的特征值。
其实也可以用矩阵 An 的第一列变换得到
fft([2 1 0 0 1])

ans=[4.00002.61800.38200.38202.6180]

又或者这样得到
F*[2 1 0 0 1]'

ans=4.00002.61800.38200.38202.6180

另一个角度去理解频率域

空间域,两个序列的x,y卷积,等于其中一个序列排成的Toeplitz矩阵乘以另一个序列,即Toep(x)y
空间域卷积的结果,等于两个序列各自的傅里叶变换XY之积,即

Toep(x)y=F1Diag(Fx)Fy

Toep(x)=F1Diag(X)F

FToep(x)F1=Diag(X)

这里用 Diag(X) 表示以向量 X 的元素为对角元的对角矩阵, Toep(x) 表示用向量x的元素排成的Toeplitz矩阵。即Fourier矩阵将Toeplitz矩阵对角化了。

参考

知乎,图像处理中,空间域的卷积相当于频率域的乘积,从矩阵分析角度如何理解?

你可能感兴趣的:(Matlab)