離散正(餘)弦訊號的時域與FFT變換後所得頻域之間的關係(幅值和相角)
離散正(餘)弦訊號的時域與FFT變換後所得頻域之間的關係
作者:jbb0523(彬彬有禮)
正弦訊號在訊號處理中是很常見的,比如通訊領域的載波。由於正弦與餘弦只是相差π/2的初相,因此這裡統稱正弦訊號。給出連續正弦訊號的表示式:
式中,A為振幅,Ω為模擬角頻率(rad/s),φ為初相,f為模擬頻率(Hz),Ω=2πf 。
在滿足奈奎斯特取樣定理條件下對訊號x(t)進行取樣得到離散正弦訊號x(n)
式中,fs為取樣頻率,Ts為取樣間隔,Ts=1/fs,ω為數字角頻率(rad),ω=2πf/fs。
根據ω可以判斷x(n)的週期性,若2π/ω為有理數則x(n)為週期訊號,週期為有理數的分母,詳情可參考數字訊號處理類教科書。
對N點長的x(n)進行FFT可得其N點長的離散傅立葉變換(DFT),記為X(k)。注意,FFT只是DFT的快速演算法的總稱。由於x(n)是實訊號,所以X(k)為對稱的,只須關注其前N/2點即可。
今天要討論的問題來自一篇文件《為什麼要進行傅立葉變換》,這是一篇網上很熱門文章,原文出處不詳,給出參考連結:網易部落格,百度文庫,豆瓣。
在原文第七部分“七、用Matlab實現快速傅立葉變換”中有一段話是這樣子寫的:
假設FFT之後某點n用複數a+bi表示,那麼這個複數的模就是An=根號a*a+b*b,相位就是Pn=atan2(b,a)。根據以上的結果,就可以計算出n點(n≠1,且n<=N/2)對應的訊號的表示式為:
對於任意一項X(k)(0<k<N/2),它所對應的時域訊號表示式為
其中。若k=0,即直流分量,其幅度為|X(k)|/N。
有關模擬頻率f與離散頻率k的關係可參見數字訊號處理類教科書,下面對時域訊號幅度相角與離散頻域的幅值相角的關係結論進證明。
為了避免頻譜洩漏,取f
對離散正弦訊號x(n)進行DFT變換:
上面推導過程中使用了尤拉公式和三角函式積化和差公式。令
則 。
當mf+k≠0時,根據離散正弦訊號的週期性判斷方法,我們知道XRe1(k)和XIm1(k)求和式中的正弦訊號一定是以N為週期的,所以從0到N-1求和必為零;同理,當mf-k≠0時,XRe2(k)和XIm2(k)求和式中的正弦訊號一定是以N為週期的,所以從0到N-1求和也必為零。若要使mf+k項為零,則必有f=k=0,若要使mf-k項為零,則要滿足mf=k。
下面以文件《為什麼要進行傅立葉變換》中的例子為例來說明:
S=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180)。式中cos引數為弧度,所以-30度和90度要分別換算成弧度。我們以256Hz的取樣率對這個訊號進行取樣,總共取樣256點。
我們取訊號S的50Hz成份。這裡fs=256Hz,N=256,f=50Hz,m=1,代入得可以通過週期性討論得知,若k≠50,則必有X(k)=0(當然k=256-50時與k=50對稱,前面我們說了只討論前N/2=128個點)。當k=50時
因此可得時域幅值相角與頻域模擬相角的關係
這裡模擬頻率f與離散頻率k的關係為
同理可以討論f=75Hz成份。對於直流成份,可以認為是如下正弦訊號
即f=0Hz,φ=0,代入得
可以通過週期性討論得知,若k≠0,則必有X(k)=0;當k=0時
其實對於直流成分沒有必要這麼複雜,直流成分就是一個常數,對常數序列A做DFT
若k≠0,求和項復正弦序列以N為週期,求和後必為零;若k=0,求和通項等於1,則
推導了半天,可能有些糊塗,最後再把結論清晰的給出來,以便查閱:
【結論1】若有離散正弦訊號
對x(n)做N點FFT得X(k),則在0<k<N/2範圍內僅在k=f/(fs/N)處有值,若設此值為X=a+jb,則此值與離散正弦訊號有如下關係
其中
結論中,為保證k=f/(fs/N)為整數(即不發生頻譜洩漏,要求f,fs,N均為正整數,且N=mfs,m為正整數,即N為整數倍的fs)
【結論2】若有直流訊號x(n)=A,對x(n)做N點FFT得X(k),則僅在k=0處有值,且此值X=AN,也可以寫為A=X/N。
附:三角函式積化和差公式