1. 程式人生 > >實數序列離散傅立葉變換(DFT)的共軛對稱性質

實數序列離散傅立葉變換(DFT)的共軛對稱性質

先在matlab中執行以一命令,觀察一下結果: 

>> b=[1 2 3 4 5 6 7 8]

b =

     1     2     3     4     5     6     7     8

>> fft(b)

ans =

  Columns 1 through 5

  36.0000            -4.0000 + 9.6569i  -4.0000 + 4.0000i  -4.0000 + 1.6569i  -4.0000         

  Columns 6 through 8

  -4.0000 - 1.6569i  -4.0000 - 4.0000i  -4.0000 - 9.6569i

>> c=[1 2 3 4 5 6 7]

c =

     1     2     3     4     5     6     7

>> fft(c)

ans =

  Columns 1 through 5

  28.0000            -3.5000 + 7.2678i  -3.5000 + 2.7912i  -3.5000 + 0.7989i  -3.5000 - 0.7989i

  Columns 6 through 7

  -3.5000 - 2.7912i  -3.5000 - 7.2678i

觀察可得,b的FFT變換結果(暫且記為B(k)吧)B(2)與B(8)、B(3)與B(7)、B(4)與B(6)互為共軛……

c的FFT變換結果(暫且記為C(k)吧)C(2)與C(7)、C(3)與C(6)、C(4)與C(5)互為共軛……

我們將FFT變換結果的下標從0開始,則重新記為B(1)與B(7)、B(2)與B(6)、B(3)與B(5)互為共軛;C(1)與C(6)、C(2)與C(5)、C(3)與C(4)互為共軛。

其實這是一個一般的規律,一個長為N的實數陣列a,對其進行離散傅立葉變換得陣列A,則A(i)與A(N-i)互為共軛,其i的取值與N的奇偶有關,詳細如下:

1)N為偶數時,i=1,...,N/2-1,A(0)與A(N/2)各為其值,且肯定是實數;

2)N為奇數時,i=1,...,(N-1)/2,A(0)為實數

以上均將FFT變換結果的下標從0開始記錄。

其實根據離散傅立葉變換的公式,我們還可以推導得出以下結論:

1)A(0)等於陣列a各元素之和;2)當N為偶數時,A(N/2)=sum[(-1)^i*a(i)] , i=0,...,N-1

其實一切均可以從DFT的公式中得出:

此性質很重要,在FGPA程式設計實現時,對實序列進行FFT變換後可以只儲存部分值即可,例如作8192點的實序列FFT變換,只需要儲存前4097點即可,後面的4095個變換結果與第1~4096個結果互為共軛,這樣就大大節省了FPGA的資源……