2019年2月16日 星期六

離散傅立葉轉換後頻譜功率計算: 負頻成分的考量 DFT/FFT Scale Factor 2/N or N for Spectrum Power Calculation?

        如何分辨你是硬體工程師還是射頻工程師呢? 一個開玩笑的分法硬體工程師吃飯工具是示波器oscilloscope,射頻工程吃飯的工具是頻譜分析儀Spectrum Analyzer,雖然是開玩笑但身為一個射頻從業人員要跟頻譜分析儀人機一體才對。

      這兩台儀器雖然說一個是量測時域一個是量測頻域,但新型態的頻譜分析儀或叫做訊號分析儀(Signal Analyzer)骨子裡都是量測時域(Time Domain),其實現實的訊號都是所謂的時域訊號,只是高頻訊號很難直接量測,所以才會用接收機先降頻後在處理,但現在高階的示波器(Oscilloscope)的取樣率(Sampling Rate)與頻寬都相當高,已經有高達100G/s的機器出現,直接進行時域量測後進行傅立葉轉換(Fourier Transform) 不就可以得到頻譜訊號嗎?

複數型傅立葉轉換Complex Discrete Fourier Transform

        (離散)傅立葉轉換DFT幾乎存在我們生活周遭,手機拍照影像處理辨識,聲音處理,與5G通訊都少不了他,他是個資料處理的過程,把原本量測到的時域訊號轉換到另外一個頻域訊號,如果有N個取樣資料,轉換到另外一個平面也會得到N點數據。而且可以進行逆轉換Inverse DFT, 如果原本資料是頻率訊號也可以透過inverse DFT得到時域訊號,有興趣可以參考這上一篇文章。

在現實(Real)的世界裡,意識虛幻(imaginary)的存在, 現代通訊基礎傅立葉轉換Fourier Transform與正交分頻工多OFDM - MacGyFu的文章 - 知乎

https://zhuanlan.zhihu.com/p/630216431

 


      學習DFT手邊我們用Microsoft Excel裡面有內建的傅立葉轉來觀察一個Sinusoid Wave 弦波訊號來進行傅立葉轉換,給入一個Vp = 1V的弦波訊號,取樣點數為N=16點,負載電阻為,功率大小可以見單計算出為0.5W27dBm.




        上圖Excel進行FFT轉出來可以觀察F(1/t)index = 1 index=14有值 (8),這時候我們要正規化大小,除以N = 16得到後就可以得到以下頻譜訊號index=1index=14有一正弦波Vp=0.5,有學過傅立葉轉換都會知道時域訊號轉成頻域訊號,如果頻率為f的正弦波訊號 sinusoid wave在頻率軸上正頻+f 與負頻 -f都會出現(數學上)


        因為Fourier Transform只是改變訊號的表達形式,(任何週期訊號都可以用不同頻率的弦波組成),所以時域訊號0.5W 27dBm拆成頻率訊號功率要守恆 Power Conservation,也就是負頻那一跟訊號是真的不能忽略它。


        計算一下會發現頻譜正頻率與負頻率為0.125WPower Sum只有21+3dBm = 24dBm. 這與時域訊號的結果不符合,少了一半的功率?



功率合併:Voltage Sum or Power Sum Scale Factor 2xN

     
        這時候我們在從新檢視剛剛計算的問題點,剛剛計算是分個頻率點分開計算後,然後"Power Sum"起來,也就是朗朗上口的0dBm + 0dBm = 3dBm,但真正要計算功率是要Voltage Sum後再進行平方運算,但如果兩個訊號正交Orthogonal,就可以分開計算Power Sum。例如
10MHz  0dBm + 20MHz 0dBm  Total Power = 3dBm



        剛剛的計算中是把兩個頻率當作Orthogonal來處理,我們在看一下剛剛的k*n/N,當k=1k=(N-1)也就是所謂的負頻部分,在數學符號上面就是相差一個"-"負號。
        在計算頻譜密度Power Spectral這兩個訊號頻率是一樣,所以在計算上面Voltage要先相加後在計算功率(voltage sum )

 


        所以我們從新排列一下,x1+x15, x2+x14, x3+x13...因為時域訊號轉出來大小會對稱,所以最後可以簡化成2倍,也就是計算係數上面常看到可以實部訊號為2/N,這也反應功率只能反應出正頻率的部分。




特殊案例 k=0 and N/2 when N is even 


        以上舉的案例都是成雙成對,所以頻譜功率計算Vrms都可以寫成以下:



但有兩個成分需要注意一下:

第一: k=0有直流成分:

k=0也就是直流的成分,下面我們演練一個直流1V的傅立葉轉換的結果,結果只有在index = 0 的時候有值 16,也就是所謂的DC成分,這時候時域的功率為V^2/R = 1W, X[0]只需要乘以Scale Factor 1/N即可。



第二: k= N/2 Nyquist Frequency有值的情況

 

     另外一個特例是當N為偶數的時候,可以看到每個人都成雙成對,但是最後一個N/2 (也稱為Nyquist Frequency)就只有單影一人,而且FFT的條件必須為N^2 2, 4, 8, 16, 32,也就是只要是FFT都會遇到這個孤單的N/2 Nyquist Frequency



        這個問題也從過年困擾到現在,Nyquist Theorem告訴至少要一半的取樣率才能還原訊號,如果時域訊號為1/2 Sampling Rate也就是1, -1, 1, -1...........
這時候進行傅立葉轉換會在N/2 index = 8產生16這個值,正規化後為16/16=1V. 但這時候Vrms如果取弦波的訊號Vrms的計算方式,會得到:


 

    從時域訊號1, -1, 1…進行FFT轉換頻譜只有在頻率index=8f=8/16=2有一根頻率訊號Vp=1V,時域下的功率為1W,但頻率軸計算為0.5W,這與時域訊號計算到的功率 1W 又少了一半0.5W,難道又是躲在負頻要用,但…..等等就只有n=8有訊號,要找誰加去?

    這點其實是Nyquist 取樣的限制,可以從V(k)Waveform功率計算其實與一個方波訊號是無法區分出來,也就是在時序計算的時候是再算一個方波訊號,其實跟只有k=0只有直流成分類似,功率都會是1W不是0.5W

  

IFFT 反相傅立葉轉換


        那其他頻率呢? 這裡換各方向先給定頻率F(k)數值在利用IFFT(inverse FFT)轉成時域訊號,在index = 7與對應的負頻率index=9填入0.5,也就是0.5*16=8)index=7Nyquist 頻率小一點,轉出來頻率功率與頻率功率守恆都是0.5W,但轉出來的時域波形怎麼看都不向一個正弦波(sine wave)……




     傅立葉轉是個雙向轉換函數,也就是說V(k)在進行FFT轉換會得到原本頻譜的訊號,那這看起來不像正弦波的波形不應該有很多頻譜成分嗎?

     其實這是取樣速率的關係,上面F(k=7)等校起來就是頻率為f=7/16=0.4375,在相同時間T內,因為只有採樣16個點,每一點都在訊號上,都因為採樣點數太少所以肉眼看起來就不像一個正弦波。



      下麵是k=3, f=0.187case,雖然奇數頻率都長得很奇怪,但當目標頻率是0.2Nyquist頻率以下的時候,肉眼才比較能夠辨識出原始的訊號,你看不出來其實DSP也大概看不出來,所以如果示波器要直接暴力FFT成頻譜來用,一般的3GHz訊號那取樣速率至少也要20G/s解析下來的訊號才會比較向個傳統頻譜分析儀。



傅立葉頻譜功率FFT Power Spectrum 


        整理一下頻譜功率計算,當採樣k=0k=15,功率計算都是類似直流功率,其他點數為正弦波計算方法,最後整理如下。



      最後用一個類似Pulse的訊號4V,經過FFT能量會平均拆分到每個頻率點,利用上面公式的計算可以得到頻譜的能量分佈,從時域功率到頻域功率總和是相等的。





    

沒有留言:

張貼留言

熱門文章