離散傅裡葉變換時數字信号進行中最重要的工具。三種常用用法:首先,計算信号頻譜。頻域表示了分量正弦波的幅度相位和頻率資訊。其次,根據系統的脈沖響應通過DFT可以得到系統頻率響應,反之亦可。最後,DFT是某些精巧信号處理步驟中的中間步驟,例如FFT 卷積,比傳統方法快很多的算法。
信号譜分析
将資訊編碼到正弦波中形成信号是一種常見的方法,無論是自然界中發生的信号或者是人工産生的信号。例如聲音信号是人類聲帶振動産生的。在這種信号中時域波形并不重要,關鍵資訊在分量正弦波的幅度,相位和頻率中。可以用DFT來抽取這些資訊。
假設我們想要呀就通過海洋傳播的聲音信号。首先将将麥克風放入水中并将得到的電信号放大到一定水準,例如幾伏特。一個模拟低通濾波器用來移除所有高于80Hz的頻率。是以信号可以用160Hz采樣率進行數字化。當擷取并存儲了幾千個采樣點後接下來的處理呢?
首先要觀察資料,下圖顯示實驗中的256個采樣點。可以看到很少的信号淹沒在噪聲中。下一步是用一個漢明窗乘以這個信号做平滑。這樣做得到256個采樣點在邊沿出幅度被削減。
做DFT,并将結果轉換為極坐标形式,不行的是看起來仍是噪聲為主的信号,這是由于在原始的256信号采樣點沒有包含足夠的資訊,用更長的DFT并無助于問題解決。例如用2048點的DFT,頻域變成了1025個采樣點長。盡管初始的2048點包含更多資訊,頻譜更多采樣點以相同因子稀釋了資訊。更長的DFT提供更好的頻率分辨率但是相同的噪聲水準。

答案是用更多原始資料不增加頻域樣點,如将原始資料分成很多256點采樣點段資料,每個資料段乘以漢明窗,經過256點DFT并且轉換為極坐标表示形式。得到的頻譜進行的平均形成了一個129點的頻譜。隻有頻域的幅度用這種方式平均,相位一般被丢棄因為他們不包含有用資訊。随機噪聲一資料段數目的平方根成正比減少。
當然還有另外的方法較少頻譜噪聲。通過采用非常長的DFT,如16384點。得到的頻譜分辨率很高,但是噪聲分量也非常多。通過一個低通濾波器來平滑頻譜則通過降低分辨率來減少了噪聲。
我們應該用哪種方法?第一種方法更簡單,因為不需要數字濾波器,第二種方法可能有更好的性能,因為數字濾波器可以在噪聲和分辨率之間達到平衡。然而,改善性能的嘗試得不償失。因為通過用更多資料既可以降低噪聲也可以增加分辨率。
如上圖顯示了海底麥克風得到信号的頻譜,圖中展示了頻譜中包含的分量。10~70Hz間平坦區域的信号包含白噪聲。白噪聲在各頻率分量大小相同。并且在時域上噪聲分量每個采樣點是不相關的。高于70Hz白噪聲分量迅速下降,這是由于抗混疊濾波器濾除了那些頻率分量。低于10Hz噪聲迅速增加是由于1/f噪聲。60Hz是商業用電頻率帶來的噪聲。25-40kHz是開關電源帶來的噪聲。
假設有得峰值相隔非常近,有兩個因素限制頻域分辨率。第一個是DFT得長度。信号做N點DFT得到的頻譜包括N/2+1個采樣點均勻分布在0~1/2采樣頻率處。為了将兩個相隔很近頻率分開,采樣間隔必須小于兩個峰值之間得間隔。例如512點DFT可以将峰值分開,而128點不可以。
限制分辨率得第二個因素比較微妙。假設通過将兩個隻有些許不同的正弦波相加得到新的信号。在比較短得時間段内得到的信号看起來像隻有一個正弦波。頻率越相近,需要更多的周期才能看出來兩個頻率分量。換句話說,信号長度限制了頻率分辨率。這個和第一個因素是不同的,因為輸入信号長度不必和DFT長度相同。例如256點信号可以通過加零到2048點長度然後做2048點的DFT。加0不會改變頻譜的形狀,隻是在頻域提供了更多的采樣點。盡管采樣間隔變小了,但分離相隔較近峰值的能力卻相比于256點DFT有一點點的改善。當DFT長度和輸入性信号長度相同時,分辨率受這兩個因素制約。
下一個問題,如果輸入信号包含兩個基函數頻率之間的頻率分量會如何?下圖給出了答案。下圖顯示兩個正弦波的頻譜,其中一個正弦波頻率與基函數相同,另一個正弦波頻率在兩個基函數頻率之間。第一個正弦波頻域用一個點表示,另外一個峰值比較難以了解,因為他不能用一個點來表示,他變成了帶有拖尾的峰值擴充到相當遠的距離。
解決方法是将信号乘以漢明窗然後再進行DFT。下圖右邊顯示了結果。這樣帶來的結果是首先兩個峰值更相似了,這是好的。其次拖尾大大減少,這也是好的。第三,窗函數通過擴充峰值寬度減小了頻譜的分辨率,這是壞處。在DSP當中,常函數提供了分辨率(峰值寬度)和頻譜洩露(拖尾幅度)的折中。
為了探究這些的理論基礎,假設以0.1采樣速率采樣一個無限長離散正弦波。則頻譜是無限窄的峰值。當然這在實際中無法實作。
為了處理這種情況,首先我們将信号截斷,即乘以一個窗函數。例如256點的矩形窗使256個點保持原來值其他值都為0。窗函數如何影響頻域呢,我們知道時域相乘對應于頻域卷積。由于原始頻譜是無限窄的峰值,加窗後信号頻譜是窗函數的頻譜移位到峰值的位置。
如圖中所示,這些窗函數都對原始頻譜産生影響通過展開峰值并且在托韋處增加無數正弦波旁瓣分量。這是隻用一部分原始時域信号帶來的不可避免的結果。不同窗函數的效果是不同的。Blackman床有最寬的旁瓣,但是拖尾幅度最小。矩形窗有最窄的主瓣但是最大的拖尾。漢明窗介于兩者之間。
在上圖中頻譜是連續曲線不是離散采樣。加窗後時域信号同樣是無限長的,即使大多數采樣點是0。這意味着頻譜在0-0.5頻域處包括∞/2+1個采樣點。
這帶來了如何修改時域信号使其能夠在計算機中表示,從信号中選擇N點。N點資料必須包含所有非零點,但也可能包含任意個數的0。這有采樣頻譜連續波的作用。例如如果N選擇1024,頻譜的連續波将在0-0.5範圍内采樣513次。如果N選擇的數值比窗長度更大,頻域采樣點間隔很近是以會保留盡可能多的資訊。
這就引入了平頂窗,在一些應用中頻譜峰值的幅度必須準确測量。由于DFT的頻譜由采樣點形成,無法保證峰值頂點正好在采樣點上。更可能的是最近的采樣點可能偏離中央。解決方法是用一個平頂窗來産生譜峰。這樣的代價是主瓣非常寬,降低了頻域分辨率。平頂窗的形狀和濾波器核形狀是相同的。
系統頻率響應
系統時域分析時采用卷積,類似的分析在頻域也可以進行。用傅裡葉變換每個輸入喜好可以表示為一組餘弦波的分量,每個分量有特定的幅度和相移。類似的,DFT可以用相似的方法來代表每個輸出信号。這意味着任何線性系統可以通過他的餘弦分量幅度和相位如何改變來完全的描述。這種資訊叫做系統的頻率響應。由于脈沖響應和頻率響應包含系統所有資訊,兩者由對應的一對一的關系。系統頻率響應時脈沖響應的傅裡葉變換。
下圖顯示了用DFT将系統脈沖響應轉換為頻率響應的例子。脈沖響應可能不會有直覺的感覺系統的作用,但轉換為頻率響應就可以輕易看出系統的作用。圖b由于采樣數較少不夠平滑,通過在DFT前在脈沖響應中加0來改善這種情況。如圖c和d所示。
頻率響應可以獲得多少的分辨率?答案是無窮高,如果脈沖響應加上無窮多個0即可。換句話說,除了DFT的長度沒有其他因素限制頻率分辨率。這帶來一個重要概念。即使脈沖響應是離散信号,對應的頻率響應也可能是連續的。
要記得頻率響應代表什麼:餘弦波通過系統的幅度和相位改變。由于輸入信号可能包含0-0.5之間任意頻率,系統的頻率響應在這個範圍内必須是連續曲線。
這可以通過引入DTFT來更好地了解。N采樣點信号通過N點DFT産生N/2+1個采樣點頻域值。DFT将時域信号認為是無限長和周期性的。即N點信号從負無窮一直重複到正無窮。考慮當我們一開始将時域加很多0的情況。加0時域周期邊長,同時使頻域采樣更緊密。
如果時域加上無窮多個0,這将産生不同的情況在兩個方面。首先,時域信号變成了非周期信号。其次,頻域采樣點間隔變得無限小。即變成了連續信号。就是DTFT的過程将時域離散非周期信号變為頻域連續信号。在數學中,DTFT将系統脈沖響應轉換為頻率響應。實際應用中用DFT來擷取真實頻率響應的采樣。這就是計算機中的應用DFT與數學方程DTFT的差别。
頻域卷積
假設你不喜歡用卷積。如果給定輸入信号和脈沖響應如何得到輸出信号?得以将兩個信号轉換為頻域進行相乘人啊後再轉換回時域。盡管中間步驟比較繁瑣,但輸出結果和直接卷積使相同的。
由于兩個原因我們盡量避免卷積,首先卷積在數學上難以處理。例如,給定系統脈沖響應和輸出信号如何得到輸入信号?可以通過做反卷積,但是這實在是難以了解。但是在頻域簡單的除法就可以達到相同的結果。頻域變得有吸引力是傅裡葉變換大大減小了複雜度。第二個原因是計算速度。标準卷積算法速度很慢是由于大量的乘加運算。而傅裡葉變換可以通過FFT來加快速度。
X[f]*H[f]=Y[f]
在極坐标表示中,輸出信号幅度等于輸入信号幅度乘以頻率響應,而輸出信号相位等于輸入信号相位加上頻率響應相位。
N點信号和M點脈沖響應的卷積的到N+M-1點輸出信号。在上圖中我們将輸入信号後面加0來擴充到N+M-1點輸出。
上圖中256點輸入信号,51個非零點的脈沖響應。這兩個信号的卷積有306個采樣點長。問題是如果頻域相乘輸入和脈沖響應都是256點DFT結果也是256點。則結果進行逆DFT後得到輸出信号是256點的。我們如何從這種頻域算法得到的256點中得到306點的資訊呢?答案是不可以。這256點的結果是正确版本的畸變輸出。這個過程叫做循環卷積。這種情況要避免。
N點DFT是将時域信号看作每個周期N點的無限多周期信号。上圖的d顯示了頻域卷積結果試圖将306點正确結果放到256點的一個周期内。這将導緻49個樣點被推到了下一個相鄰的周期。這些重疊的地方導緻相加。
一旦循環卷積的特性了解了,就容易避免這種情況。簡單的将要卷積的信号加入足夠多的0值即可。
之前我們提過将DFT時域看作N點非周期信号或者周期信号是否有差別,現在可以給出答案是是的。如果時域信号是周期的,循環卷積的畸變可以了解為一個周期信号擴充到另一個周期。作為對比,如果隻考慮時域的N個采樣點,頻域卷積的作用就像一個環卷起來采樣點0和采樣點N-1相鄰。