循環矩陣傅里葉對角化


循環矩陣傅里葉對角化

All circulant matrices are made diagonal by the Discrete Fourier Transform (DFT), regardless of the generating vector x.
任意循環矩陣可以被傅里葉變換矩陣對角化。

文獻中,一般用如下方式表達這一概念:

     X


     =


     C


     (


     x


     )


     =


     F


     ⋅


     d


     i


     a


     g


     (



      x


      ^



     )


     ⋅



      F


      H




    X=C(x)=F \cdot diag(\hat{x}) \cdot F^H


 X=C(x)=F⋅diag(x^)⋅FH

其中

    X



   X


X是循環矩陣,





     x


     ^




   \hat{x}


x^是原向量




    x



   x


x的傅里葉變換,




    F



   F


F是傅里葉變換矩陣,上標H表示共軛轉置:





     X


     H



    =


    (



     X


     ∗




     )


     T




   X^H=(X^{*})^T


XH=(X∗)T。<br> 換句話說,




    X



   X


X相似於對角陣,




    X



   X


X的特征值是





     x


     ^




   \hat x


x^的元素。

另一方面,如果一個矩陣能夠表示成兩個傅里葉矩陣夾一個對角陣的乘積形式,則它是一個循環矩陣。其生成向量是對角元素的傅里葉逆變換:

     F


     ⋅


     d


     i


     a


     g


     (


     y


     )


     ⋅



      F


      H



     =


     C


     (



      F



       −


       1




     (


     y


     )


     )



    F \cdot diag(y) \cdot F^H = C(\mathcal{F}^{-1}(y))


 F⋅diag(y)⋅FH=C(F−1(y))<br> 這個公式初看疑問很多,以下一一討論。

    X



   X


X是什么?






    X



   X


X是由原向量




    x



   x


x生成的循環矩陣。以矩陣尺寸




    K


    =


    4



   K=4


K=4為例。






     X


     =


     C


     (


     x


     )


     =



      [







           x


           1








           x


           2








           x


           3








           x


           4










           x


           4








           x


           1








           x


           2








           x


           3










           x


           3








           x


           4








           x


           1








           x


           2










           x


           2








           x


           3








           x


           4








           x


           1







      ]




    X=C(x)=\begin{bmatrix} x_1 & x_2 & x_3 & x_4 \\ x_4 & x_1 & x_2 & x_3 \\ x_3 & x_4 & x_1 & x_2 \\ x_2 & x_3 & x_4 & x_1 \\ \end{bmatrix}


 X=C(x)=⎣⎢⎢⎡​x1​x4​x3​x2​​x2​x1​x4​x3​​x3​x2​x1​x4​​x4​x3​x2​x1​​⎦⎥⎥⎤​

    F



   F


F 是什么?






    F



   F


F是離散傅里葉矩陣(DFT matrix),可以用一個復數




    ω


    =



     e



      −


      2


      π


      i


      /


      K





   \omega = e^{-2\pi i/K}


ω=e−2πi/K表示,其中




    K



   K


K為方陣




    F



   F


F的尺寸。以




    K


    =


    4



   K=4


K=4為例。






     F


     =



      1



       K





      [






          1






          1






          1






          1








          1






          ω







           ω


           2








           ω


           3









          1







           ω


           2








           ω


           4








           ω


           6









          1







           ω


           3








           ω


           6








           ω


           9







      ]




    F=\frac{1}{\sqrt{K}} \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & \omega & \omega^2 & \omega^3 \\ 1 & \omega^2 & \omega ^4 & \omega^6 \\ 1 & \omega^3 & \omega^6 & \omega^9 \end{bmatrix}


 F=K
               <svg width="400em" height="1.08em" viewbox="0 0 400000 1080" preserveaspectratio="xMinYMin slice">
                <path d="M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,

-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8, -50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0, 35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5, -221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467 s-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422 s-65,47,-65,47z M834 80H400000v40H845z"></path> </svg>​1​⎣⎢⎢⎡​1111​1ωω2ω3​1ω2ω4ω6​1ω3ω6ω9​⎦⎥⎥⎤​

    ω



   \omega


ω想象成一個角度為




    2


    π


    /


    K



   2\pi/K


2π/K的向量,這個矩陣的每一行是這個向量在不斷旋轉。從上到下,旋轉速度越來越快。

之所以稱為DFT matrix,是因為一個信號的DFT變換可以用此矩陣的乘積獲得:

      x


      ^



     =


     D


     F


     T


     (


     x


     )


     =



      K



     ⋅


     F


     ⋅


     x



    \hat{x}=DFT(x)=\sqrt{K}\cdot F \cdot x


 x^=DFT(x)=K
        <svg width="400em" height="1.08em" viewbox="0 0 400000 1080" preserveaspectratio="xMinYMin slice">
         <path d="M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,

-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8, -50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0, 35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5, -221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467 s-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422 s-65,47,-65,47z M834 80H400000v40H845z"></path> </svg>​⋅F⋅x

反傅里葉變換也可以通過類似手段得到:

     x


     =



      1



       K





      F



       −


       1





      x


      ^




    x=\frac{1}{\sqrt{K}}F^{-1}\hat{x}


 x=K
               <svg width="400em" height="1.08em" viewbox="0 0 400000 1080" preserveaspectratio="xMinYMin slice">
                <path d="M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,

-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8, -50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0, 35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5, -221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467 s-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422 s-65,47,-65,47z M834 80H400000v40H845z"></path> </svg>​1​F−1x^

傅里葉矩陣有許多性質:

  • 是對稱矩陣,觀察

         ω
    
    
    
        \omega
    
    
     ω的規律即可知;</li><li>滿足
    
    
    
    
    
          F
    
    
          H
    
    
    
         F
    
    
         =
    
    
         F
    
    
    
          F
    
    
          H
    
    
    
         =
    
    
         I
    
    
    
        F^HF=FF^H=I
    
    
     FHF=FFH=I,也就是說它是個**酉矩陣**(unitary)。可以通過將
    
    
    
    
    
          F
    
    
          H
    
    
    
    
        F^{H}
    
    
     FH展開成
    
    
    
    
    
          ω
    
    
          H
    
    
    
    
        \omega^{H}
    
    
     ωH驗證。</li>
    

    注意:

        F
    
    
    
       F
    
    
    F是常數,可以提前計算好,和要處理的
    
    
    
    
        x
    
    
    
       x
    
    
    x無關。
    
    

    對角化怎么理解?

    把原公式兩邊乘以逆矩陣:

          F
    
    
    
           −
    
    
           1
    
    
    
    
         ⋅
    
    
         X
    
    
         ⋅
    
    
         (
    
    
    
          F
    
    
          H
    
    
    
    
          )
    
    
    
           −
    
    
           1
    
    
    
    
         =
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
         )
    
    
    
        F^{-1} \cdot X \cdot (F^H)^{-1}=diag(\hat{x})
    
    
     F−1⋅X⋅(FH)−1=diag(x^) 
    
    
    
    
         左
    
    
         邊
    
    
         =
    
    
    
          F
    
    
          H
    
    
    
         X
    
    
         F
    
    
         =
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
         )
    
    
    
        左邊=F^{H}XF=diag(\hat{x})
    
    
     左邊=FHXF=diag(x^)
    
    

    也就是說,矩陣

        X
    
    
    
       X
    
    
    X通過相似變換
    
    
    
    
        F
    
    
    
       F
    
    
    F變成對角陣
    
    
    
    
        d
    
    
        i
    
    
        a
    
    
        g
    
    
        (
    
    
    
         x
    
    
         ^
    
    
    
        )
    
    
    
       diag(\hat{x})
    
    
    diag(x^),即對循環矩陣
    
    
    
    
        X
    
    
    
       X
    
    
    X進行對角化。<br> 另外,
    
    
    
    
    
         F
    
    
         H
    
    
    
        X
    
    
        F
    
    
    
       F^HXF
    
    
    FHXF是矩陣
    
    
    
    
        X
    
    
    
       X
    
    
    X的2D DFT變換。即傅里葉變換可以把循環矩陣對角化。
    
    

    怎么證明?

    可以用構造特征值和特征向量的方法證明(參看這篇論文[1](#fn1)的3.1節),此處簡單描述。

         X
    
    
         ⋅
    
    
    
          f
    
    
          k
    
    
    
         =
    
    
    
    
           x
    
    
           ^
    
    
    
          k
    
    
    
         ⋅
    
    
    
          f
    
    
          k
    
    
    
    
        X\cdot f_k=\hat x_k\cdot f_k
    
    
     X⋅fk​=x^k​⋅fk​
    
    

    其中

         f
    
    
         k
    
    
    
    
       f_k
    
    
    fk​表示DFT矩陣的第k列,
    
    
    
    
    
    
          x
    
    
          ^
    
    
    
         k
    
    
    
    
       \hat x_k
    
    
    x^k​表示傅里葉變換的第k個元素。等價於求證:
    
    
    
    
    
         f
    
    
         k
    
    
    
    
       f_k
    
    
    fk​和
    
    
    
    
    
    
          x
    
    
          ^
    
    
    
         k
    
    
    
    
       \hat x_k
    
    
    x^k​是
    
    
    
    
        X
    
    
    
       X
    
    
    X的一對特征向量和特征值。
    
    

    左邊向量的第i個元素為:

        l
    
    
        e
    
    
        f
    
    
    
         t
    
    
         i
    
    
    
        =
    
    
    
         [
    
    
    
          x
    
    
          i
    
    
    
         ,
    
    
    
          f
    
    
          k
    
    
    
         ]
    
    
    
    
       left_i = \left[ x^i, f_k \right]
    
    
    lefti​=[xi,fk​]。
    
    
    
    
    
         x
    
    
         i
    
    
    
    
       x_i
    
    
    xi​表示把生成向量
    
    
    
    
        x
    
    
    
       x
    
    
    x向右移動i位,
    
    
    
    
        [
    
    
        ]
    
    
    
       []
    
    
    []表示內積。<br> 內積只和兩個向量的相對位移有關,所以可以把
    
    
    
    
    
         f
    
    
         k
    
    
    
    
       f_k
    
    
    fk​向左移動i位:
    
    
    
    
        l
    
    
        e
    
    
        f
    
    
    
         t
    
    
         i
    
    
    
        =
    
    
    
         [
    
    
         x
    
    
         ,
    
    
    
          f
    
    
          k
    
    
    
           −
    
    
           i
    
    
    
    
         ]
    
    
    
    
       left_i=\left[ x, f_k^{-i}\right]
    
    
    lefti​=[x,fk−i​]。<br> DFT矩陣列的移位可以通過數乘
    
    
    
    
        ω
    
    
    
       \omega
    
    
    ω的冪實現:
    
    
    
    
    
         f
    
    
         k
    
    
         i
    
    
    
        =
    
    
    
         f
    
    
         0
    
    
    
        ⋅
    
    
    
         ω
    
    
    
          i
    
    
          k
    
    
    
    
    
       f_k^i=f_0\cdot \omega^{ik}
    
    
    fki​=f0​⋅ωik。
    
    

    舉例:

         K
    
    
         =
    
    
         3
    
    
    
        K=3
    
    
     K=3,<br> 
    
    
    
    
          F
    
    
          =
    
    
    
           1
    
    
    
            K
    
    
    
    
    
           [
    
    
    
    
    
    
               1
    
    
    
    
    
    
               1
    
    
    
    
    
    
               1
    
    
    
    
    
    
    
    
               1
    
    
    
    
    
    
               ω
    
    
    
    
    
    
    
                ω
    
    
                2
    
    
    
    
    
    
    
    
    
               1
    
    
    
    
    
    
    
                ω
    
    
                2
    
    
    
    
    
    
    
    
                ω
    
    
                4
    
    
    
    
    
    
    
           ]
    
    
    
    
         F=\frac{1}{\sqrt{K}} \begin{bmatrix} 1 & 1 & 1\\ 1 & \omega & \omega^2 \\ 1 & \omega^2 & \omega ^4 \end{bmatrix}
    
    
      F=K
                    <svg width="400em" height="1.08em" viewbox="0 0 400000 1080" preserveaspectratio="xMinYMin slice">
                     <path d="M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,
    

    -10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8, -50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0, 35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5, -221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467 s-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422 s-65,47,-65,47z M834 80H400000v40H845z"></path> </svg>​1​⎣⎡​111​1ωω2​1ω2ω4​⎦⎤​</p>

    利用

          ω
    
    
          N
    
    
    
         =
    
    
         1
    
    
    
        \omega^N=1
    
    
     ωN=1.<br> 
    
    
    
    
    
           f
    
    
           1
    
    
    
          ⋅
    
    
          ω
    
    
          =
    
    
          [
    
    
          1
    
    
          ,
    
    
          ω
    
    
          ,
    
    
    
           ω
    
    
           2
    
    
    
          ]
    
    
          ⋅
    
    
          ω
    
    
          =
    
    
          [
    
    
          ω
    
    
          ,
    
    
    
           ω
    
    
           2
    
    
    
          ,
    
    
    
           ω
    
    
           3
    
    
    
          ]
    
    
          =
    
    
          [
    
    
          ω
    
    
          ,
    
    
    
           ω
    
    
           2
    
    
    
          ,
    
    
          1
    
    
          ]
    
    
          =
    
    
    
           f
    
    
           1
    
    
    
            −
    
    
            1
    
    
    
    
    
         f_1\cdot \omega =[1,\omega,\omega^2]\cdot \omega = [\omega, \omega^2,\omega^3] = [\omega, \omega^2, 1]=f_1^{-1}
    
    
      f1​⋅ω=[1,ω,ω2]⋅ω=[ω,ω2,ω3]=[ω,ω2,1]=f1−1​</p> 
    
    
    

           f
    
    
           1
    
    
    
          ⋅
    
    
    
           ω
    
    
           2
    
    
    
          =
    
    
          [
    
    
          1
    
    
          ,
    
    
          ω
    
    
          ,
    
    
    
           ω
    
    
           2
    
    
    
          ]
    
    
          ⋅
    
    
    
           ω
    
    
           2
    
    
    
          =
    
    
          [
    
    
    
           ω
    
    
           2
    
    
    
          ,
    
    
    
           ω
    
    
           3
    
    
    
          ,
    
    
    
           ω
    
    
           4
    
    
    
          ]
    
    
          =
    
    
          [
    
    
    
           ω
    
    
           2
    
    
    
          ,
    
    
          1
    
    
          ,
    
    
          ω
    
    
          ]
    
    
          =
    
    
    
           f
    
    
           1
    
    
    
            −
    
    
            2
    
    
    
    
    
         f_1\cdot \omega^2 =[1,\omega,\omega^2]\cdot \omega^2 = [\omega^2, \omega^3,\omega^4] = [\omega^2, 1, \omega]=f_1^{-2}
    
    
      f1​⋅ω2=[1,ω,ω2]⋅ω2=[ω2,ω3,ω4]=[ω2,1,ω]=f1−2​</p> 
    
    
    

    於是有:

         l
    
    
         e
    
    
         f
    
    
    
          t
    
    
          i
    
    
    
         =
    
    
    
          [
    
    
          x
    
    
          ,
    
    
    
           f
    
    
           k
    
    
    
          ⋅
    
    
    
           ω
    
    
    
            i
    
    
            k
    
    
    
    
          ]
    
    
    
         =
    
    
    
          [
    
    
          x
    
    
          ,
    
    
    
           f
    
    
           k
    
    
    
          ]
    
    
    
         ⋅
    
    
    
          ω
    
    
    
           i
    
    
           k
    
    
    
    
    
        left_i= \left [x, f_k \cdot \omega^{ik}\right ]=\left [x, f_k\right ] \cdot \omega^{ik} 
    
    
     lefti​=[x,fk​⋅ωik]=[x,fk​]⋅ωik
    
    

    右邊的$\hat x = F\cdot x

        ,
    
    
        考
    
    
        慮
    
    
        到
    
    
    
       ,考慮到
    
    
    ,考慮到F
    
    
    
    
        的
    
    
        第
    
    
        k
    
    
        行
    
    
        和
    
    
        第
    
    
        k
    
    
        列
    
    
        相
    
    
        同
    
    
        ,
    
    
    
       的第k行和第k列相同,
    
    
    的第k行和第k列相同,\hat x_k=[f_k,x]
    
    
    
    
        。
    
    
        另
    
    
        外
    
    
    
       。另外
    
    
    。另外f_k
    
    
    
    
        的
    
    
        第
    
    
        i
    
    
        個
    
    
        元
    
    
        素
    
    
        為
    
    
    
       的第i個元素為
    
    
    的第i個元素為\omega^{ik}$:<br> 
    
    
    
    
         r
    
    
         i
    
    
         g
    
    
         h
    
    
    
          t
    
    
          i
    
    
    
         =
    
    
    
    
           x
    
    
           ^
    
    
    
          k
    
    
    
         ⋅
    
    
    
          f
    
    
    
           k
    
    
           i
    
    
    
    
         =
    
    
         [
    
    
    
          f
    
    
          k
    
    
          ∗
    
    
    
         ,
    
    
         x
    
    
         ]
    
    
         ⋅
    
    
    
          ω
    
    
    
           k
    
    
           i
    
    
    
    
    
        right_i = \hat x_k\cdot f_{ki}=[f_k^*,x]\cdot \omega^{ki}
    
    
     righti​=x^k​⋅fki​=[fk∗​,x]⋅ωki
    
    

    對任意k列的第i個元素有:

        l
    
    
        e
    
    
        f
    
    
    
         t
    
    
         i
    
    
    
        =
    
    
        r
    
    
        i
    
    
        g
    
    
        h
    
    
    
         t
    
    
         i
    
    
    
    
       left_i=right_i
    
    
    lefti​=righti​
    
    

    更多性質

    利用對角化,能推導出循環矩陣的許多性質。

    轉置

    循環矩陣的轉置也是一個循環矩陣(可以查看循環矩陣各元素排列證明),其特征值和原特征值共軛。

          X
    
    
          T
    
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
    
          )
    
    
          ∗
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
    
        X^T=F \cdot diag((\hat{x})^*) \cdot F^H
    
    
     XT=F⋅diag((x^)∗)⋅FH 
    
    
    
    
    
          X
    
    
          T
    
    
    
         =
    
    
         (
    
    
    
          F
    
    
          H
    
    
    
    
          )
    
    
          T
    
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
         )
    
    
    
          F
    
    
          T
    
    
    
    
        X^T=(F^H)^T\cdot diag(\hat x) F^T
    
    
     XT=(FH)T⋅diag(x^)FT<br> 由於
    
    
    
    
        F
    
    
    
       F
    
    
    F是對稱酉矩陣,且已知
    
    
    
    
        X
    
    
    
       X
    
    
    X是實矩陣:<br> 
    
    
    
    
    
          X
    
    
          T
    
    
    
         =
    
    
    
          F
    
    
          ∗
    
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
         )
    
    
         F
    
    
         =
    
    
    
    
           (
    
    
    
            F
    
    
            ∗
    
    
    
           ⋅
    
    
           d
    
    
           i
    
    
           a
    
    
           g
    
    
           (
    
    
    
            x
    
    
            ^
    
    
    
           )
    
    
           F
    
    
           )
    
    
    
          ∗
    
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
    
          )
    
    
          ∗
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
    
        X^T=F^*\cdot diag(\hat x) F=\left( F^*\cdot diag(\hat x) F\right)^*=F\cdot diag((\hat x)^*) \cdot F^H
    
    
     XT=F∗⋅diag(x^)F=(F∗⋅diag(x^)F)∗=F⋅diag((x^)∗)⋅FH
    
    

    如果原生成向量

        x
    
    
    
       x
    
    
    x是對稱向量(例如[1,2,3,4,3,2]),則其傅里葉變換為實數,則:<br> 
    
    
    
    
    
          X
    
    
          T
    
    
    
         =
    
    
         C
    
    
    
          (
    
    
    
           F
    
    
    
            −
    
    
            1
    
    
    
    
          (
    
    
    
           x
    
    
           ^
    
    
    
    
           )
    
    
           ∗
    
    
    
          )
    
    
    
         =
    
    
         C
    
    
         (
    
    
         x
    
    
         )
    
    
    
        X^T=C\left( \mathcal F^{-1}(\hat x)^* \right)=C(x)
    
    
     XT=C(F−1(x^)∗)=C(x)
    
    

    卷積

    循環矩陣乘向量等價於生成向量的逆序和該向量卷積,可進一步轉化為福利也變化相乘。
    注意卷積本身即包含逆序操作,另外利用了信號與系統中經典的“時域卷積,頻域相乘”。

         F
    
    
         (
    
    
         X
    
    
         y
    
    
         )
    
    
         =
    
    
         F
    
    
         (
    
    
         C
    
    
         (
    
    
         x
    
    
         )
    
    
         y
    
    
         )
    
    
         =
    
    
         F
    
    
         (
    
    
    
          x
    
    
          ˉ
    
    
    
         ∗
    
    
         y
    
    
         )
    
    
         =
    
    
    
          F
    
    
          ∗
    
    
    
         (
    
    
         x
    
    
         )
    
    
         ⊙
    
    
         F
    
    
         (
    
    
         y
    
    
         )
    
    
    
        \mathcal{F}(Xy) = \mathcal{F}(C(x)y)=\mathcal{F}(\bar x*y)=\mathcal{F}^*(x)\odot \mathcal{F}(y)
    
    
     F(Xy)=F(C(x)y)=F(xˉ∗y)=F∗(x)⊙F(y)<br> 其中
    
    
    
    
    
         x
    
    
         ˉ
    
    
    
    
       \bar x
    
    
    xˉ表示把
    
    
    
    
        x
    
    
    
       x
    
    
    x的元素倒序排列。星號表示共軛。
    
    

    相乘

        C
    
    
        ,
    
    
        B
    
    
    
       C,B
    
    
    C,B為循環矩陣,其乘積的特征值等於特征值的乘積:
    
    
    
    
    
    
         A
    
    
         B
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          a
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
         ⋅
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          b
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
    
        AB = F\cdot diag(\hat a) \cdot F^H \cdot F \cdot diag(\hat b) \cdot F^H
    
    
     AB=F⋅diag(a^)⋅FH⋅F⋅diag(b^)⋅FH
    
    
    
    
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          a
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          b
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          a
    
    
          ^
    
    
    
         ⊙
    
    
    
          b
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
    
        = F\cdot diag(\hat a) \cdot diag(\hat b) \cdot F^H=F\cdot diag(\hat a \odot \hat b) \cdot F^H
    
    
     =F⋅diag(a^)⋅diag(b^)⋅FH=F⋅diag(a^⊙b^)⋅FH
    
    
    
    
    
    
         =
    
    
         C
    
    
    
          (
    
    
    
           F
    
    
    
            −
    
    
            1
    
    
    
    
          (
    
    
    
           a
    
    
           ^
    
    
    
          ⊙
    
    
    
           b
    
    
           ^
    
    
    
          )
    
    
          )
    
    
    
    
        =C\left( \mathcal F^{-1}(\hat a \odot \hat b)\right)
    
    
     =C(F−1(a^⊙b^))<br> 乘積也是循環矩陣,其生成向量是原生成向量對位相乘的傅里葉逆變換。
    
    

    相加

    和的特征值等於特征值的和:

         A
    
    
         +
    
    
         B
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          a
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
         +
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          b
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          a
    
    
          ^
    
    
    
         +
    
    
    
          b
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
    
        A+B = F\cdot diag(\hat a) \cdot F^H + F \cdot diag(\hat b) \cdot F^H=F\cdot diag(\hat a +\hat b) \cdot F^H
    
    
     A+B=F⋅diag(a^)⋅FH+F⋅diag(b^)⋅FH=F⋅diag(a^+b^)⋅FH
    
    
    
    
    
    
         =
    
    
         C
    
    
    
          (
    
    
    
           F
    
    
    
            −
    
    
            1
    
    
    
    
          (
    
    
    
           a
    
    
           ^
    
    
    
          +
    
    
    
           b
    
    
           ^
    
    
    
          )
    
    
          )
    
    
    
         =
    
    
         C
    
    
    
          (
    
    
    
           F
    
    
    
            −
    
    
            1
    
    
    
    
          (
    
    
    
           a
    
    
           ^
    
    
    
          )
    
    
          +
    
    
    
           F
    
    
    
            −
    
    
            1
    
    
    
    
          (
    
    
    
           b
    
    
           ^
    
    
    
          )
    
    
          )
    
    
    
         =
    
    
         C
    
    
    
          (
    
    
          a
    
    
          +
    
    
          b
    
    
          )
    
    
    
    
        =C\left( \mathcal F^{-1} (\hat a +\hat b)\right)=C\left( \mathcal F^{-1} (\hat a )+F^{-1} (\hat b )\right)=C\left( a+b\right)
    
    
     =C(F−1(a^+b^))=C(F−1(a^)+F−1(b^))=C(a+b)<br> 和也是循環矩陣,其生成向量是原生成向量的和。
    
    

    求逆

    循環矩陣的逆,等價於將其特征值求逆。

          X
    
    
    
           −
    
    
           1
    
    
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
    
          )
    
    
    
           −
    
    
           1
    
    
    
    
    
          F
    
    
          H
    
    
    
         =
    
    
         C
    
    
    
          (
    
    
    
           F
    
    
    
            −
    
    
            1
    
    
    
    
          (
    
    
          d
    
    
          i
    
    
          a
    
    
          g
    
    
          (
    
    
    
           x
    
    
           ^
    
    
    
    
           )
    
    
    
            −
    
    
            1
    
    
    
    
          )
    
    
          )
    
    
    
    
        X^{-1}=F\cdot diag(\hat{x})^{-1}F^H=C\left( \mathcal F^{-1}(diag(\hat{x})^{-1}) \right)
    
    
     X−1=F⋅diag(x^)−1FH=C(F−1(diag(x^)−1)) 
    
    
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
    
          )
    
    
    
           −
    
    
           1
    
    
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
         ⋅
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
    
        F\cdot diag(\hat{x})^{-1}\cdot F^H \cdot F\cdot diag(\hat{x}) \cdot F^H
    
    
     F⋅diag(x^)−1⋅FH⋅F⋅diag(x^)⋅FH
    
    
    
    
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
    
          )
    
    
    
           −
    
    
           1
    
    
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
         =
    
    
         F
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
         =
    
    
         I
    
    
    
        =F\cdot diag(\hat{x})^{-1}\cdot diag(\hat{x}) \cdot F^H=F\cdot F^H=I
    
    
     =F⋅diag(x^)−1⋅diag(x^)⋅FH=F⋅FH=I
    
    

    逆也是循環矩陣

    有什么用?

    該性質可以將循環矩陣的許多運算轉換成更簡單的運算。例如:

          X
    
    
          H
    
    
    
         X
    
    
         =
    
    
         F
    
    
         ⋅
    
    
         d
    
    
         i
    
    
         a
    
    
         g
    
    
         (
    
    
    
          x
    
    
          ^
    
    
    
         ⊙
    
    
    
    
           x
    
    
           ^
    
    
    
          ∗
    
    
    
         )
    
    
         ⋅
    
    
    
          F
    
    
          H
    
    
    
         =
    
    
         C
    
    
    
          (
    
    
    
           F
    
    
    
            −
    
    
            1
    
    
    
    
          (
    
    
    
           x
    
    
           ^
    
    
    
          ⊙
    
    
    
    
            x
    
    
            ^
    
    
    
           ∗
    
    
    
          )
    
    
          )
    
    
    
    
        X^HX=F \cdot diag(\hat{x} \odot \hat{x}^*)\cdot F^H=C\left( \mathcal F^{-1}(\hat{x} \odot \hat{x}^*) \right)
    
    
     XHX=F⋅diag(x^⊙x^∗)⋅FH=C(F−1(x^⊙x^∗))
    
    

    原始計算量:兩個方陣相乘(

        O
    
    
        (
    
    
    
         K
    
    
         3
    
    
    
        )
    
    
    
       O(K^3)
    
    
    O(K3))<br> 轉化后的計算量:反向傅里葉(
    
    
    
    
        K
    
    
        log
    
    
        ⁡
    
    
        K
    
    
    
       K\log K
    
    
    KlogK)+向量點乘(
    
    
    
    
        K
    
    
    
       K
    
    
    K)。
    
    

    CV的許多算法中,都利用了這些性質提高運算速度,例如2015年TPAMI的這篇高速跟蹤KCF方法[2](#fn2)

    二維情況

    以上探討的都是原始信號為一維的情況。以下證明二維情況下的

         F
    
    
         H
    
    
    
        X
    
    
        F
    
    
        =
    
    
        d
    
    
        i
    
    
        a
    
    
        g
    
    
        (
    
    
    
         x
    
    
         ^
    
    
    
        )
    
    
    
       F^HXF=diag(\hat x)
    
    
    FHXF=diag(x^),推導方法和一維類似。
    
    
    
    
    
    
        x
    
    
    
       x
    
    
    x是二維生成矩陣,尺寸
    
    
    
    
        N
    
    
        ×
    
    
        N
    
    
    
       N\times N
    
    
    N×N。<br> 
    
    
    
    
        X
    
    
    
       X
    
    
    X是一個
    
    
    
    
    
         N
    
    
         2
    
    
    
        ×
    
    
    
         N
    
    
         2
    
    
    
    
       N^2\times N^2
    
    
    N2×N2的分塊循環矩陣,其uv塊記為
    
    
    
    
    
         x
    
    
    
          u
    
    
          v
    
    
    
    
    
       x^{uv}
    
    
    xuv,表示
    
    
    
    
        x
    
    
    
       x
    
    
    x下移u行,右移v列。<br> 
    
    
    
    
        F
    
    
    
       F
    
    
    F是
    
    
    
    
    
         N
    
    
         2
    
    
    
        ×
    
    
    
         N
    
    
         2
    
    
    
    
       N^2\times N^2
    
    
    N2×N2的二維DFT矩陣,其第uv塊記為
    
    
    
    
    
         f
    
    
    
          u
    
    
          v
    
    
    
    
        =
    
    
    
    
          {
    
    
    
           ω
    
    
    
            u
    
    
            i
    
    
            +
    
    
            v
    
    
            j
    
    
    
    
          }
    
    
    
    
          i
    
    
          j
    
    
    
    
    
       f_{uv}=\left\{ \omega^{ui+vj} \right\} _{ij}
    
    
    fuv​={<!-- -->ωui+vj}ij​。
    
    

    舉例:N=3

           f
    
    
           01
    
    
    
          =
    
    
    
           [
    
    
    
    
    
    
               1
    
    
    
    
    
    
               ω
    
    
    
    
    
    
    
                ω
    
    
                2
    
    
    
    
    
    
    
    
    
               1
    
    
    
    
    
    
               ω
    
    
    
    
    
    
    
                ω
    
    
                2
    
    
    
    
    
    
    
    
    
               1
    
    
    
    
    
    
               ω
    
    
    
    
    
    
    
                ω
    
    
                2
    
    
    
    
    
    
    
           ]
    
    
    
          ,
    
    
    
           f
    
    
           11
    
    
    
          =
    
    
    
           [
    
    
    
    
    
    
               1
    
    
    
    
    
    
               ω
    
    
    
    
    
    
    
                ω
    
    
                2
    
    
    
    
    
    
    
    
    
               ω
    
    
    
    
    
    
    
                ω
    
    
                2
    
    
    
    
    
    
    
    
                ω
    
    
                3
    
    
    
    
    
    
    
    
    
    
                ω
    
    
                2
    
    
    
    
    
    
    
    
                ω
    
    
                3
    
    
    
    
    
    
    
    
                ω
    
    
                4
    
    
    
    
    
    
    
           ]
    
    
    
    
    
         f_{01}=\begin{bmatrix} 1 & \omega & \omega^2 \\ 1 & \omega & \omega^2 \\ 1 & \omega & \omega^2\end{bmatrix}, f_{11}=\begin{bmatrix} 1 & \omega & \omega^2 \\ \omega & \omega^2 & \omega^3 \\ \omega^2 & \omega^3 & \omega^4\end{bmatrix}\\ 
    
    
      f01​=⎣⎡​111​ωωω​ω2ω2ω2​⎦⎤​,f11​=⎣⎡​1ωω2​ωω2ω3​ω2ω3ω4​⎦⎤​</p> 
    
    
    

    需要驗證的共有

        N
    
    
        ×
    
    
        N
    
    
    
       N\times N
    
    
    N×N個等式,其中第
    
    
    
    
        u
    
    
        v
    
    
    
       uv
    
    
    uv個為:<br> 
    
    
    
    
         [
    
    
         X
    
    
         ,
    
    
    
          f
    
    
    
           u
    
    
           v
    
    
    
    
         ]
    
    
         =
    
    
    
    
           x
    
    
           ^
    
    
    
    
           u
    
    
           v
    
    
    
    
         ⋅
    
    
    
          f
    
    
    
           u
    
    
           v
    
    
    
    
    
        [X, f_{uv}]=\hat x_{uv}\cdot f_{uv}
    
    
     [X,fuv​]=x^uv​⋅fuv​<br> 其中
    
    
    
    
        [
    
    
        X
    
    
        ,
    
    
    
         f
    
    
    
          u
    
    
          v
    
    
    
    
        ]
    
    
    
       [X, f_{uv}]
    
    
    [X,fuv​]表示把
    
    
    
    
    
         x
    
    
    
          u
    
    
          v
    
    
    
    
    
       x^{uv}
    
    
    xuv分別和
    
    
    
    
    
         f
    
    
    
          u
    
    
          v
    
    
    
    
    
       f_{uv}
    
    
    fuv​做點乘,結果矩陣元素求和。 
    
    
    
    
         [
    
    
    
          x
    
    
    
           i
    
    
           j
    
    
    
    
         ,
    
    
    
          f
    
    
    
           u
    
    
           v
    
    
    
    
         ]
    
    
         =
    
    
    
    
           x
    
    
           ^
    
    
    
    
           u
    
    
           v
    
    
    
    
         ⋅
    
    
    
          ω
    
    
    
           u
    
    
           i
    
    
           +
    
    
           v
    
    
           j
    
    
    
    
    
        [x^{ij},f_{uv}]=\hat x_{uv} \cdot \omega^{ui+vj}
    
    
     [xij,fuv​]=x^uv​⋅ωui+vj
    
    

    再次利用兩個性質:1) 點乘只和兩個矩陣相對位移有關,2)

         f
    
    
    
          u
    
    
          v
    
    
    
    
    
       f_{uv}
    
    
    fuv​的位移可以用乘
    
    
    
    
        ω
    
    
    
       \omega
    
    
    ω冪實現:<br> 
    
    
    
    
         l
    
    
         e
    
    
         f
    
    
    
          t
    
    
    
           i
    
    
           j
    
    
    
    
         =
    
    
         [
    
    
         x
    
    
         ,
    
    
    
          f
    
    
    
           u
    
    
           v
    
    
    
    
           −
    
    
           i
    
    
           −
    
    
           j
    
    
    
    
         ]
    
    
         =
    
    
         [
    
    
         x
    
    
         ,
    
    
    
          f
    
    
    
           u
    
    
           v
    
    
    
    
         ]
    
    
         ⋅
    
    
    
          ω
    
    
    
           u
    
    
           i
    
    
           +
    
    
           v
    
    
           j
    
    
    
    
         =
    
    
    
    
           x
    
    
           ^
    
    
    
    
           u
    
    
           v
    
    
    
    
         ⋅
    
    
    
          ω
    
    
    
           u
    
    
           i
    
    
           +
    
    
           v
    
    
           j
    
    
    
    
         =
    
    
         r
    
    
         i
    
    
         g
    
    
         h
    
    
    
          t
    
    
    
           i
    
    
           j
    
    
    
    
    
        left_{ij}=[x,f_{uv}^{-i-j}]=[x,f_{uv}]\cdot \omega^{ui+vj}=\hat x_{uv} \cdot \omega^{ui+vj}=right_{ij}
    
    
     leftij​=[x,fuv−i−j​]=[x,fuv​]⋅ωui+vj=x^uv​⋅ωui+vj=rightij​
    
    

    代碼

    以下matlab代碼驗證上述性質。需要注意的是,matlab中的dftmatx函數給出的結果和本文定義略有不同,需做一簡單轉換。另外,matlab中的撇號表示共軛轉置,transpose為轉置函數,conj為共軛函數。

    clear;clc;close all;
    
    % 1. diagnolize 
    K = 5;      % dimension of problem
    
    x_base = rand(1,K);     % generator vector
    X = zeros(K,K);         % circulant matrix
    for k=1:K
        X(k,:) = circshift(x_base, [0 k-1]);
    end
    
    x_hat = fft(x_base);    % DFT
    
    F = transpose(dftmtx(K))/sqrt(K);       % the " ' " in matlab is transpose + conjugation
    
    X2 = F*diag(x_hat)*F';
    
    display(X);
    display(real(X2));
    
    % 2. fast compute correlation
    C = X'*X;
    C2 = (x_hat.*conj(x_hat))*conj(F)/sqrt(K);
    
    display(C);
    display(C2);
    1. Gray, Robert M. Toeplitz and circulant matrices: A review. now publishers inc, 2006. ↩︎ 1. Henriques, João F., et al. “High-speed tracking with kernelized correlation filters.” Pattern Analysis and Machine Intelligence, IEEE Transactions on 37.3 (2015): 583-596. ↩︎

  • 免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM