兩個頻率,同一串取樣
在這一級的前兩篇指南裡,你認識了離散傅立葉轉換,它把 N 個等間距取樣點變成 N 個頻率係數;也認識了 Cooley-Tukey 的快速傅立葉轉換,它用 O(N log N) 而非 O(N^2) 算出那些係數。兩者都把取樣點當成既定的輸入。本篇要問的是訊號處理無法跳過的前一個問題:當你以固定的速率對一段連續波取樣,你究竟捕捉到了什麼——又悄悄丟掉了什麼?答案比多數人預期的更銳利、也更出人意料。
從最乾淨的實驗開始。在時刻 t_n = n/F 對純餘弦 cos(2 pi f t) 取樣,其中 F 是取樣率(每秒取樣數),而 n = 0, 1, 2, ...。頻率 f 與頻率 f + F 會落在「完全相同」的取樣點上,因為把頻率加上 F,等於給每個角度加上一整數倍的 2 pi n,而餘弦根本不在意整圈的轉動。這兩條連續波截然不同,卻步調一致地穿過每一個取樣點。一旦你手上只剩取樣點,你就分不出它們——DFT 也分不出。
這就是混疊:在固定取樣率下,一個高頻會偽裝成——也就是別名為——一個較低的頻率。整個無窮的頻率梯級 f、f + F、f + 2F、f - F、... 全都塌縮到同一個 DFT 係數上。這個混疊現象不是 DFT 的瑕疵,也不是捨入造成的假象;它是「只擁有連續世界的離散取樣」這件事所導致的、硬性而精確的後果。你並沒有失去準確度——你失去的是發問的能力。
馬車輪與一半取樣率的天花板
你親眼見過混疊。在老電影裡,馬車輪有時會向後轉,或在馬車向前飛奔時靜止不動。膠卷每秒取樣這個場景 24 次;如果一根輻條在兩格之間幾乎前進了整整一個間隔,你的大腦會把它讀成稍微向「後」滑了一點。一個快速的正向旋轉被混疊成一個緩慢的反向旋轉——這正是 f + F 偽裝成 f 的視覺孿生。一盞調到風扇葉片頻率的頻閃燈會讓葉片凍結,原因相同:取樣時刻與運動串通好了。
那麼安全的天花板在哪?把偽裝反過來看。在取樣率 F 之下,一個實數值訊號能呈現的頻率被擠進寬度為 F 的一個頻帶裡;又因為一條實餘弦同時帶著 +f 與 -f,真正能誠實區分的範圍只從 0 到 F/2。那個一半取樣率的邊界,就是奈奎斯特頻率,也就是奈奎斯特頻率。任何低於它的成分,在取樣中保有真實身分;任何高於它的成分,則會折返下來——以 F/2 為軸反射——並穿著較低頻率的戲服現身。奈奎斯特頻率,正是「你的取樣能忠實回報的東西」與「它會撒謊的東西」之間那條精確的分界線。
從 DFT 頻譜讀出混疊
DFT 把這個折返講得徹底具體。用率 F 取的 N 個樣本,係數 X_k 對應頻率 k F/N,其中 k = 0, 1, ..., N-1。關鍵在於你已在 DFT 的週期性裡見過的環繞:索引 N - k 並非全新的頻率,而是索引 k 的負頻率。所以有意義的頻譜在中間折疊——第 0 到 N/2 個 bin 承載著一路爬到奈奎斯特的正頻率,而上半部的 bin 是它們的鏡像,也就是負頻率。連續訊號裡任何高於 F/2 的東西,早在你看見之前就已經被「加進」這些相同的 bin 裡了。DFT 無法拆開取樣早已混在一起的東西。
F = 1000 Hz sampling rate, N = 1000 samples bin width = F/N = 1 Hz per bin true signal: a single tone at 700 Hz 700 Hz > Nyquist = F/2 = 500 Hz -> it ALIASES folded frequency = F - 700 = 1000 - 700 = 300 Hz => energy appears in the 300 Hz bin, NOT 700 Hz (700 reflects across 500 down to 300)
這也是為什麼補救必須在取樣「之前」、而非之後。一旦能量落進錯誤的 bin,你就無法把頻譜重新展開——那份資訊永遠消失了。所以真實的類比數位轉換器會在前面放一個抗混疊濾波器:一個類比低通濾波器,在取樣器看到之前,就先把所有高於 F/2 的成分實體地移除。那個 700 Hz 的音調在硬體裡就被消滅了,於是它永遠無法溜進 300 Hz 的 bin。誠實的法則很直接:先濾波,再取樣;下游沒有任何軟體能補救。
取樣定理:取樣何時足夠
現在把氣氛從警告翻成承諾。假設一個訊號是帶限的——它確實「不」含有任何達到或超過某上限 B 的頻率。Nyquist-Shannon 取樣定理,也就是取樣定理,做出一個了不起的宣稱:只要你取樣得比 2B 快,這些離散取樣完全不損失任何東西。整段連續訊號——取樣點之間每一刻的每一個值——都能從那些離散的點上「精確」重建。這不是一個隨點數增加而變好的近似,不像你早先見過的有限差分;只要取樣率一越過 2B,它就是一個精確的等式。
點怎麼可能決定一條連續曲線?因為帶限是一個兇悍的約束。一個沒有任何高於 B 之能量的訊號,無法在取樣之間任意地快速擺動——它的各個值被綁在一起。重建公式把這點寫得很清楚:在每個取樣點放一個 sinc 函數(sin(pi x)/(pi x),形狀是中央一個隆起、兩側漣漪逐漸消逝),以該取樣點的高度縮放,再把它們加起來。每個 sinc 在「其他」每一個取樣時刻都恰好為零,所以這個總和完美命中每一個點,而帶限則逼出中間那條平滑、唯一的內插。它正是 DFT 在有限網格上所做的三角內插的連續表親。
小字條款:洩漏與誠實的界限
取樣定理很美,也很理想化,攀登者應當清楚知道它在哪裡彎折。第一,完美帶限的訊號在自然界並不存在——一個有限時長的訊號不可能擁有嚴格有限的頻率範圍,所以任何 B 之上總有一點點能量,因而也總有一絲殘餘的混疊。第二,精確的 sinc 重建需要「所有」取樣點,在兩個方向上無限延伸,而沒有真實機器擁有它。我們永遠只能用一個有限的視窗工作,而這個截斷有它自己的代價。
這個代價有個名字:頻譜洩漏。在一段有限紀錄的兩端把訊號截斷,等同於把它乘上一個矩形視窗,而一道銳利的矩形邊緣富含高頻。因此,一個不恰好落在某個 DFT bin 中心的純音調,不會給出一根乾淨的尖峰——它的能量會「抹開」,或說洩漏,進入相鄰的 bin。這個頻譜洩漏效應與混疊(那是關於取樣率的)不同,但住在隔壁:兩者都把頻譜弄糊,也都源自「乾淨的連續理論」與「有限的離散現實」之間的落差。
標準的緩解手段是一個視窗函數——把紀錄乘上一個平滑的漸縮(Hann、Hamming、Blackman 及其同伴),讓訊號在兩端溫和地收到零,而不是硬生生剁斷。這個視窗函數把邊緣磨柔,能戲劇性地縮小洩漏的裙襬,誠實的代價是主峰會略寬、略糊。天下沒有白吃的午餐:你拿銳利的解析度去換低洩漏,而正確的視窗取決於你更在乎分開兩個相近的音調,還是更在乎在響亮音調旁辨認出一個微弱的音調。
帶上階梯的東西
把這三個想法綁在一起。取樣把一整族無窮的頻率塌縮到每個 DFT bin 上——那是混疊。誠實的邊界坐落在取樣率的一半——那是奈奎斯特頻率。而如果訊號嚴格地待在那條線之下,取樣就什麼都不損失,連續波能被精確重建——那是取樣定理。每一條都是精確的數學,但每個真實系統都是透過不完美的濾波器、有限的視窗與浮點運算去碰觸它們,所以你實際得到的位數仍是近似。下一篇你會立刻用上這一切,在那裡同一套 DFT 機制驅動了快速卷積。