理解離散傅立葉變換(四. 複數形式離散傅立葉變換)

原文鏈接
https://blog.csdn.net/dznlong/article/details/2280867

 

理解離散傅立葉變換(四)
                     ------複數形式離散傅立葉變換
       複數形式的離散傅立葉變換非常巧妙地運用了複數的方法,使得傅立葉變換變換更加自然和簡潔,它並不是只是簡單地運用替換的方法來運用複數,而是完全從複數的角度來分析問題,這一點跟實數DFT是完全不一樣的。
 
一、          把正餘弦函數表示成複數的形式
 
通過歐拉等式可以把正餘弦函數表示成複數的形式:
 
       cos( x ) = 1/2 e j(-x) + 1/2 ejx
 
 
   sin( x ) = j (1/2 e j(-x) - 1/2 ejx)
 
 
 
從這個等式可以看出,如果把正餘弦函數表示成複數後,它們變成了由正負頻率組成的正餘弦波,相反地,一個由正負頻率組成的正餘弦波,可以通過複數的形式來表示。
 
我們知道,在實數傅立葉變換中,它的頻譜是0 ~ π(0 ~ N/2),但無法表示-π~ 0的頻譜,可以預見,如果把正餘弦表示成複數形式,則能夠把負頻率包含進來。
 
二、          把變換前後的變量都看成複數的形式
 
複數形式傅立葉變換把原始信號x[n]當成是一個用複數來表示的信號,其中實數部分表示原始信號值,虛數部分爲0,變換結果X[k]也是個複數的形式,但這裏的虛數部分是有值的。在這裏要用複數的觀點來看原始信號,是理解複數形式傅立葉變換的關鍵(如果有學過複變函數則可能更好理解,即把x[n]看成是一個複數變量,然後象對待實數那樣對這個複數變量進行相同的變換)。
 
三、          對複數進行相關性算法(正向傅立葉變換)
 
從實數傅立葉變換中可以知道,我們可以通過原始信號乘以一個正交函數形式的信號,然後進行求總和,最後就能得到這個原始信號所包含的正交函數信號的分量。現在我們的原始信號變成了複數,我們要得到的當然是複數的信號分量,我們是不是可以把它乘以一個複數形式的正交函數呢?答案是肯定的,正餘弦函數都是正交函數,變成如下形式的複數後,仍舊還是正交函數(這個從正交函數的定義可以很容易得到證明):
cos x + j sin x, cos x – j sin x……
 
這裏我們採用上面的第二個式子進行相關性求和,爲什麼用第二個式子呢?,我們在後面會知道,正弦函數在虛數中變換後得到的是負的正弦函數,這裏我們再加上一個負號,使得最後的得到的是正的正弦波,根據這個於是我們很容易就可以得到了複數形式的DFT正向變換等式:
      
       這個式子很容易可以得到歐拉變換式子:
      
 
       其實我們是爲了表達上的方便纔用到歐拉變換式,在解決問題時我們還是較多地用到正餘弦表達式。
 
       對於上面的等式,我們要清楚如下幾個方面(也是區別於實數DFT的地方):
1、X[k]x[n]都是複數,但x[n]的虛數部分都是由0組成的,實數部分表示原始信號;
2、k的取值範圍是0 ~ N-1 (也可以表達成0 ~ 2π),其中0 ~ N/2(或0 ~ π)是正頻部分,N/2 ~ N-1π~ 2π)是負頻部分,由於正餘弦函數的對稱性,所以我們把π~ 0表示成π~ 2π,這是出於計算上方便的考慮。
3、其中的j是一個不可分離的組成部分,就象一個等式中的變量一樣,不能隨便去掉,去掉之後意義就完全不一樣了,但我們知道在實數DFT中,j只是個符號而已,把j去掉,整個等式的意義不變;
4、下圖是個連續信號的頻譜,但離散頻譜也是與此類似的,所以不影響我們對問題的分析:
              
              上面的頻譜圖把負頻率放到了左邊,是爲了迎合我們的思維習慣,但在實際實現中我們一般是把它移到正的頻譜後面的。
從上圖可以看出,時域中的正餘弦波(用來組成原始信號的正餘弦波)在複數DFT的頻譜中被分成了正、負頻率的兩個組成部分,基於此等式中前面的比例係數是1/N(或1/2π),而不是2/N,這是因爲現在把頻譜延伸到了2π,但把正負兩個頻率相加即又得到了2/N,又還原到了實數DFT的形式,這個在後面的描述中可以更清楚地看到。由於複數DFT生成的是一個完整的頻譜,原始信號中的每一個點都是由正、負兩個頻率組合而成的,所以頻譜中每一個點的帶寬是一樣的,都是1/N,相對實數DFT,兩端帶寬比其它點的帶寬少了一半;
複數DFT的頻譜特徵具有週期性:-N/2 ~ 0N/2 ~ N-1是一樣的,實域頻譜呈偶對稱性(表示餘弦波頻譜),虛域頻譜呈奇對稱性(表示正弦波頻譜)。
 
四、          逆向傅立葉變換
 
假設我們已經得到了複數形式的頻譜X[k],現在要把它還原到複數形式的原始信號x[n],當然應該是把X[k]乘以一個複數,然後再進行求和,最後得到原始信號x[n],這個跟X[k]相乘的複數首先讓我們想到的應該是上面進行相關性計算的複數:cos(2πkn/N) – j sin(2πkn/N),但其中的負號其實是爲了使得進行逆向傅立葉變換時把正弦函數變爲正的符號,因爲虛數j的運算特殊性,使得原來應該是正的正弦函數變爲了負的正弦函數(我們從後面的推導會看到這一點),所以這裏的負號只是爲了糾正符號的作用,在進行逆向DFT時,我們可以把負號去掉,於是我們便得到了這樣的逆向DFT變換等式:

x[n] = X[k] (cos(2πkn/N) + j sin(2πkn/N))

我們現在來分析這個式子,會發現這個式其實跟實數傅立葉變換是可以得到一樣結果的。我們先把X[k]變換一下:

 

X[k] = Re X[k] + j Im X[k]

這樣我們就可以對x[n]再次進行變換,如:

x[n] = (Re X[k] + j Im X[k]) (cos(2πkn/N) + j sin(2πkn/N))

    = ( Re X[k] cos(2πkn/N) + j Im X[k] cos(2πkn/N) +

           j Re X[k] sin(2πkn/N) -  Im X[k] sin(2πkn/N) )

       = ( Re X[k] (cos(2πkn/N) + j sin(2πkn/N)) +    ---------------------(1)

            Im X[k] ( - sin(2πkn/N) + j cos(2πkn/N)))  ---------------(2)
這時我們就把原來的等式分成了兩個部分,第一個部分是跟實域中的頻譜相乘,第二個部分是跟虛域中的頻譜相乘,根據頻譜圖我們可以知道,Re X[k]是個偶對稱的變量,Im X[k]是個奇對稱的變量,即
Re X[k] = Re X[- k]
Im X[k] = - Im X[-k]
k的範圍是0 ~ N-10~N/2表示正頻率,N/2~N-1表示負頻率,爲了表達方便我們把N/2~N-1-k來表示,這樣在從0N-1的求和過程中對於(1)(2)式分別有N/2對的k-k的和,對於(1)式有:
Re X[k] (cos(2πkn/N) + j sin(2πkn/N)) + Re X[- k] (cos( - 2πkn/N) + j sin( -2πkn/N))
根據偶對稱性和三角函數的性質,把上式化簡得到:
Re X[k] (cos(2πkn/N) + j sin(2πkn/N)) + Re X[ k] (cos( 2πkn/N) - j sin( 2πkn/N))
這個式子最後的結果是:
2 Re X[ k] cos(2πkn/N)
再考慮到求Re X[ k]等式中有個比例係數1/N,把1/N乘以2,這樣的結果不就是跟實數DFT中的式子一樣了嗎?
 
對於(2)式,用同樣的方法,我們也可以得到這樣的結果:
-2 Im X[k] sin(2πkn/N
注意上式前面多了個負符號,這是由於虛數變換的特殊性造成的,當然我們肯定不能把負符號的正弦函數跟餘弦來相加,還好,我們前面是用cos(2πkn/N) – j sin(2πkn/N)進行相關性計算,得到的Im X[k]中有個負的符號,這樣最後的結果中正弦函數就沒有負的符號了,這就是爲什麼在進行相關性計算時虛數部分要用到負符號的原因(我覺得這也許是複數形式DFT美中不足的地方,讓人有一種拼湊的感覺)。
 
從上面的分析中可以看出,實數傅立葉變換跟複數傅立葉變換,在進行逆變換時得到的結果是一樣的,只不過是殊途同歸吧。
附: WORD文檔下載地址:http://download.csdn.net/source/444234
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章