A
を巡回ブロックを持つブロック巡回行列 (つまり、 BCCB行列) とします。
A = [1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1]
あれは:
A = [C1 C2
C2 C1]
ここで、各ブロック ( C1
, C2
) は巡回行列です。BCCB は次の式に従って対角化できることを読みました (ここを参照)。ここで、 は 2 次元離散フーリエ変換行列、は の共役、 はエントリが の固有値である対角行列です。A =F*·D·F
F
F*
F
D
A
MATLAB では、次のコードを使用します。
(conj(dftmtx(4))/16*(fft2(A))*dftmtx(4))
しかし、結果は次のとおりです。
[1 4 3 2
2 3 4 1
3 2 1 4
4 1 2 3]
ここでは、 の 2 番目と 4 番目の列A
が入れ替わっています。エラーはどこにありますか?