一個只會一招的系統
站在一座長盪鞦韆下,每當它盪回來就推一下。如果你正好按著鞦韆的天然節奏推,它便越盪越高;推得太快或太慢,多數力氣就白費了。鞦韆回應的是你推的頻率,而不是任何單一推力的形狀。一個線性非時變(LTI)系統——濾波器、放大器、一段纜線、一間滿是回音的房間——表現也是如此。餵它一個純正弦波,它回給你的是完全相同頻率的正弦波,只是被重新縮放並做了時間平移。它從不無中生有出新的頻率。這個近乎平淡的事實,正是電機工程師最深的依靠。
為什麼會這樣?因為正弦波(寫成複指數 e^{j2πft})是任何 LTI 系統的特徵函數:把它推進去,出來的還是同一個波,只不過乘上了一個常數。這個常數是複數——它帶著大小與角度——而且取決於頻率 f。我們稱它為 H(f),即頻率響應。於是整個 LTI 系統的個性,就壓縮成一個關於頻率的複值函數。只要告訴我 H(f),我就能預測任何輸入的輸出,完全不必動用微分方程式。
INPUT spectrum FILTER's response OUTPUT spectrum
X(f) × H(f) = Y(f)
|X| |H| |Y| = |H||X|
### ‾‾‾\__ ##
#### \ ###
##### every freq \ keeps lows, ####
###### present \ kills highs ##
+---------- f +----------- f +----- ·
(highs gone)
Frequency f1: Y(f1) = H(f1) · X(f1) <- independent
Frequency f2: Y(f2) = H(f2) · X(f2) <- of each other
...
No frequency leaks into any other. Pure scaling per channel.幅值與相位:兩張圖,一個故事
因為 H(f) 是複數,它在每個頻率都帶來兩則消息。幅值 |H(f)| 說明那個正弦波被放大或衰減了多少——增益 2 把振幅加倍,增益 0.1 把它縮成十分之一。相位 ∠H(f) 說明輸出正弦波相對輸入在時間上被推移了多少——某頻率落後 −90° 意味著那個波晚了四分之一週期才出來。我們幾乎從不把兩者畫在同一組軸上。我們改畫兩條疊放、對頻率作圖的曲線:上方是幅值響應,下方是相位響應。兩者合起來就是波德圖。
兩個尺度技巧讓這些圖在實際電子學龐大的範圍內仍易讀。第一,頻率採對數軸,所以每一步是一個十倍頻程(decade,×10):10 Hz、100 Hz、1 kHz、10 kHz 都等距排列。音訊跨三個十倍頻程,射頻跨九個——線性軸根本沒法用。第二,幅值用分貝表示:|H| 的 dB = 20·log₁₀|H|。係數 20 用於振幅比(功率比用 10)。這把乘法變成加法,於是串接兩個濾波器只要把它們的 dB 曲線相加,眼睛讀的是斜率而非曲線。
dB ratios worth memorising -------------------------- |H| = 1 -> 20·log10(1) = 0 dB (no change) |H| = 2 -> 20·log10(2) = +6 dB (double) |H| = 10 -> 20·log10(10) = +20 dB (×10) |H| = 0.707 -> 20·log10(.707) = -3 dB (the cutoff!) |H| = 0.5 -> 20·log10(.5) = -6 dB (half) |H| = 0.1 -> 20·log10(.1) = -20 dB (1/10) A slope of '-20 dB/decade' means: every ×10 in frequency, the output drops by a factor of 10.
四種形狀,四種任務:濾波器分類
一旦你能流暢讀懂幅值圖,濾波器就會依輪廓自動分類。低通讓慢訊號通過、扼住快訊號——這正是你想用來平滑雜訊感測讀數,或從解調訊號剝去載波時所要的。高通反其道而行,阻擋直流與緩慢漂移,卻放行俐落的邊緣,就像示波器的交流耦合輸入會忽略電池偏壓、卻把漣波顯示給你看。帶通保留一扇頻率窗口、拒斥窗外一切——好比收音機調諧器從空氣中挑出一個電台。帶阻(或陷波)恰恰相反,外科手術般移除某個惱人的頻段,例如在心電圖中以 50/60 Hz 陷波消滅市電哼聲。
LOW-PASS HIGH-PASS
|H| |H|
‾‾‾‾\ /‾‾‾‾
\ /
\____ /____
+--------- f +--------- f
pass | stop stop | pass
BAND-PASS BAND-STOP (notch)
|H| |H|
/‾‾\ ‾‾\ /‾‾
/ \ \ /
__/ \__ \/
+--------- f +--------- f
keeps a window removes a window實作範例:RC 低通,從元件到曲線
沒有什麼比電子學中最樸素的濾波器更能把 H(f) 變具體:一個電阻 R 餵給一個電容 C,輸出取自電容兩端。在低頻時,電容有的是時間充電,所以它跟得上輸入、輸出等於輸入——增益約為 1。在高頻時,電容還沒怎麼開始充電,輸入就反向了,於是它停在接近 0 V——訊號被扼殺。這就是低通濾波器,用兩個元件加一條線就做成了。
要得到 H(f),我們把電路當成用複數阻抗構成的分壓器。電容的阻抗是 Z_C = 1/(j2πfC);電阻就是 R。分壓給出 H(f) = Z_C / (R + Z_C) = 1 / (1 + j2πfRC)。注意 R 與 C 合起來定出單一個時間常數 τ = RC,而截止點恰落在虛部等於 1 之處,也就是 2πf_c·RC = 1。
- 選元件。 取 R = 1.6 kΩ、C = 100 nF。則 τ = RC = 1.6×10³ × 100×10⁻⁹ = 1.6×10⁻⁴ 秒 = 160 µs。
- 求截止頻率。 f_c = 1 / (2πRC) = 1 / (2π × 1.6×10⁻⁴) ≈ 995 Hz——就當作 1 kHz。
- 驗證 −3 dB 點。 在 f = f_c 時,項 j2πfRC = j1,故 H = 1/(1+j1),|H| = 1/√2 = 0.707 → 恰為 −3 dB。✓
- 驗證該處相位。 ∠H = −arctan(2πfRC) = −arctan(1) = 在截止頻率處 −45°——一階低通標誌性的中途相位落後。
- 讀滾降。 在 f_c 之上一個十倍頻程(10 kHz),|H| ≈ 1/10 → −20 dB。之後每多一個十倍頻程再掉 20 dB。斜率 = −20 dB/decade。
Vin o---[ R = 1.6k ]---+---o Vout
|
[ C ] 100nF
|
GND
H(f) = 1 / (1 + j·2pi·f·R·C), f_c = 1/(2pi·R·C) ~ 1 kHz
|H| in dB phase
0 ----____ 0 ---\__
-3 ‾·(f_c) -45 ·(f_c)
-20 ‾‾‾\__ -20dB/dec -90 ‾‾‾---
10 100 1k 10k 100k 10 100 1k 10k 100k
(Hz, log) (Hz, log)
freq |H| dB phase
100 Hz 0.995 -0.04 -5.7 deg
1 kHz 0.707 -3.0 -45 deg <- cutoff
10 kHz 0.0995 -20.0 -84 deg
100 kHz 0.010 -40.0 -89.4 deg同一齣戲,兩套戲服:濾波就是摺積
我們一直住在頻域裡,那裡濾波是一次乾淨的乘法,Y(f) = H(f)·X(f)。但電路本身住在時域,訊號一邊到達它就一邊逐點處理。頻域裡的一次乘法,如何翻譯回時域?靠的是摺積定理——整個訊號處理中最有用的橋樑:頻域的乘法等於時域的摺積。H(f) 在時域的孿生兄弟是脈衝響應 h(t)——也就是當你用一記無限尖銳的敲擊打它時,系統吐出來的那段擺動。
這個聯繫優美而緊密:H(f) 是 h(t) 的[[ee-fourier-transform|傅立葉轉換]],而 h(t) 是 H(f) 的反轉換。它們是同一個對象的兩種語言。以我們的 RC 濾波器為例,用脈衝敲它,電容瞬間充電、再以 h(t) = (1/RC)·e^{−t/RC} 洩放——一條長度由 τ 設定的衰減尾巴。把任何輸入與那條指數尾巴做摺積,跟把它的頻譜乘上 1/(1+j2πfRC) 完全等價。兩張圖,一個濾波器。
TIME domain FREQUENCY domain
----------- ----------------
x(t) --[ * h(t) ]--> y(t) X(f) --[ × H(f) ]--> Y(f)
convolution multiplication
(hard) (easy)
h(t) <----- Fourier transform -----> H(f)
impulse response frequency response
(RC: a decaying e^{-t/RC} tail) (RC: 1/(1+j2pi f RC))
The two domains are bridged by the Fourier transform.
Pick whichever side makes your problem simple.像高手一樣讀波德圖
把這一切組合起來,波德圖就成了一眼可讀的故事。由左到右掃過幅值曲線:平坦區是通帶,下坡是阻帶在逼近,而斜率本身(dB/decade)告訴你階數。找出 −3 dB 點以標記截止頻率,並量出它們之間的頻寬。接著瞥一眼相位曲線,判斷濾波器會把快訊號的時序抹糊多少——在截止點附近劇烈擺動的相位,預示著振鈴與延遲。
- 找通帶。 幅值曲線的平坦頂部——以大致滿增益(0 dB)通過的頻率。
- 標出截止頻率。 曲線跌破通帶位準 −3 dB 之處。一個交點=低通/高通;兩個=帶通/帶阻。
- 讀頻寬。 各截止頻率之間(或低通單一截止頻率以下)的頻率跨度。
- 讀滾降斜率。 每階 −20 dB/decade。越陡=越高階=越銳利但相位失真越多。
- 檢視相位。 緩和的相位=忠實的時序;f_c 附近相位急轉=對銳利邊緣應預期延遲與振鈴。