頻閃燈定理
想像夜店裡的頻閃燈打在一台旋轉的風扇上。風扇從未停下,但在閃光的閃爍中,它可能看起來凝結不動、緩緩前進,甚至倒著轉。風扇本身毫無變化——變的只是你看它的頻率。這正是取樣整個問題的一幅縮影:數位系統從不連續地觀看訊號。它眨眼。一顆類比數位轉換器在某個瞬間抓取電壓,等待,再抓取,產生一串離散時間訊號——一連串相隔 T 秒的數字。兩次眨眼之間發生的一切,都永遠消失了。
令人驚嘆的好消息——由 Harry Nyquist 與 Claude Shannon 證明——是這串有縫隙的數字竟然可以是無損的。若一個訊號不含任何高於 f_max 的頻率,那麼以大於 2·f_max 的取樣率 f_s 取樣,就能完美捕捉它——原始的連續波形可被精確重建,縫隙中沒有任何資訊遺失。這個神奇的門檻 2·f_max,就是奈奎斯特率。取樣率高於它,快照便說盡真相;低於它,它們就開始說謊。
當快照說謊時:一個混疊的算例
我們故意違反這條規則,看看災難如何上演。取一個乾淨的 1 kHz 正弦音——一個單純的音高,大約是高兩個八度的高音 C——並只以 1.2 kHz 取樣。這個訊號要求的奈奎斯特率是 2 × 1 kHz = 2 kHz,但我們以 1.2 kHz 取樣,遠遠太慢。我們取樣器的奈奎斯特頻率只有 1.2 kHz / 2 = 600 Hz,而我們的 1 kHz 音調直接越過了它。那麼 ADC 究竟記錄下了什麼?
高於奈奎斯特頻率的頻率不會消失——它們會摺疊。任何頻率 f 會以 f_s 及其倍數為軸被鏡射,以別名(混疊)的形式重新出現在合法頻帶內,落在 f_alias = |f − k·f_s|,其中整數 k 使它落入 [0, f_s/2]。代入數字:|1000 − 1200| = 200 Hz。從我們 1 kHz 音調取下的樣本,與一個真正的 200 Hz 音調所產生的樣本*在數值上完全相同*。ADC 分辨不出它們,下游的任何東西也分辨不出。一個純粹的高音,就這樣被一個幽靈般的低音取代了。
ANALOG 1 kHz sine (period = 1.000 ms)
/\ /\ /\ /\ /\
/ \ / \ / \ / \ / \
/ \ / \ / \ / \ /
\ / \ / \ / \ /
\/ \/ \/ \/
SAMPLE every 0.833 ms (f_s = 1.2 kHz)
x x x x
\ / \ / \ /
\ / \ / \ /
`--x--` `--x--` `--x--`
The sample dots (x) trace a SLOW 200 Hz wave
f_alias = |1000 - 1200| = 200 Hz
Reconstructed output: a 200 Hz tone that was NEVER played.守門的衛兵:抗混疊濾波器
殘酷之處在此:混疊是不可逆的。一旦 1 kHz 音調摺疊成了 200 Hz,再聰明的 DSP 也無法把它摺回去,因為確實再沒有任何資訊能區分幽靈般的 200 Hz 與真正的 200 Hz。你無法在 ADC 之後修復混疊——只能在它*之前*預防。防線是一道抗混疊濾波器:一個直接接在轉換器前的類比低通濾波器,任務是在取樣器看見之前,丟掉每一個高於奈奎斯特頻率的頻率。
in ──►[ Anti-alias ]──►[ ADC ]──► samples ──►[ DSP ]
[ low-pass ] f_s = 1.2 kHz
[ filter ]
kills f > 600 Hz BEFORE sampling
Frequency view:
gain
1 |‾‾‾‾‾‾\
| \ <-- filter rolls off here
| \____
0 |_____________\________________ f
0 600 Hz | 1 kHz tone
f_s/2 ^ blocked, never aliases沒有真實濾波器是完美的磚牆,所以工程師預留餘裕:CD 音訊承載最高 20 kHz 的內容,卻以 44.1 kHz 取樣,而非僅僅 40 kHz 的最低值。20 kHz 與 22.05 kHz 奈奎斯特頻率之間那 2.05 kHz 的餘裕,給了類比濾波器優雅滾降的空間。同樣的抗混疊邏輯日後會以*數位*形式重現——當你用 FIR 濾波器降取樣時,必須先低通,理由與防摺疊一模一樣。
- 確定你訊號真正含有的最高頻率 f_max(例如音樂為 20 kHz)。
- 選一個寬裕地高於 2·f_max 的取樣率,為非理想濾波器留餘裕(44.1 kHz,而非 40 kHz)。
- 在 ADC 前放置一道類比低通抗混疊濾波器,其截止頻率低於 f_s / 2。
- 到此才讓 ADC 取樣——任何通過濾波器的成分都是合法的,無法摺疊。
另一個軸:位元、量化,與每階 6 dB
取樣把時間切成一個個瞬間;那只是數位化的一半。另一半把*振幅*切成一階階的位準。當 ADC 測量每個瞬間的電壓時,它必須把那個精確的值四捨五入到有限階梯上最近的一階——這個過程稱為量化。一顆 N 位元的轉換器有 2^N 階:8 位元給 256 階,16 位元給 65,536 階。落在兩階之間的部分都被捨入抹去,而這個捨入誤差表現得像疊加在訊號上的一陣微弱嘶聲——量化雜訊。
美妙的規律就在這裡。你每多一個位元,就把階與階之間的間隙減半,使捨入誤差減半,使訊雜比加倍。以分貝計,加倍就是 +6 dB——所以每個位元為你換來約 6 dB 的 SNR。對一個滿刻度正弦波,標準公式是 SNR ≈ 6.02·N + 1.76 dB。算一算:16 位元的 CD 給出 6.02×16 + 1.76 ≈ 98 dB,一片廣闊、近乎無聲的雜訊底。8 位元的轉換器只勉強做到 ≈ 50 dB——當門鈴叮咚足矣,拿來播音樂則明顯沙啞。
SNR ~= 6.02 * N + 1.76 (dB), full-scale sine
---------------------------------------------
N bits | levels | SNR (dB) | feel
-------+----------+----------+----------------
8 | 256 | ~50 | retro / lo-fi
12 | 4096 | ~74 | instrumentation
16 | 65536 | ~98 | CD audio
24 | 16.7 M | ~146 | studio master
Each extra bit -> x2 finer steps -> +6 dB.為何這一階撐起了整個課程
從現在起你會遇到的每一個取樣率數字,都是一個喬裝過的奈奎斯特決策。電話語音以 8 kHz 取樣,因為可辨識的人聲落在 4 kHz 以下。藍牙與多數播客跑 16 kHz 或 48 kHz;專業音訊偏好 96 或 192 kHz,把抗混疊濾波器推到可聽頻帶之外老遠。一台把 100 MHz 頻譜切片數位化的軟體無線電,需要一顆時脈超過 200 MS/s 的 ADC。這些都不是憑空訂的——每一個都是 2·f_max 加上餘裕,正是你剛才為 1 kHz 音調做過的同一道算術。
而混疊也不全是反派。故意欠取樣——帶通取樣——那道毀了我們音調的摺疊,反而能聰明地把一段窄窄的高頻帶滑降成一段慢速訊號,讓你便宜的 ADC 也能數位化它,這正是現代無線電的核心技巧之一。規則從不改變;你只是選擇站在它的哪一邊。掌握這一階,課程其餘的部分——頻譜、FIR 濾波器、重取樣、FFT——就會變成一連串的必然結果,而非一連串的意外驚嚇。