實數序列離散傅立葉變換(DFT)的共軛對稱性質
>> 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的資源……