6.2 DFT 與頻譜分析#
本章導言#
現實中我們永遠只有有限個取樣值: \(N\) 個數字。對它們的譜分析就是離散傅立葉轉換(DFT):
以及逆變換 \(x_n = \frac{1}{N}\sum_k X_k e^{2\pi i kn/N}\) 。DFT 把 \(N\) 點訊號分解為 \(N\) 個離散頻率的複指數——有限維的正交分解(1.3 節的矩陣版)。本節將建立 DFT 的矩陣觀點與頻率–取樣率的對應、剖析三個不可避免的「有限性效應」(柵欄效應、洩漏、混疊)、並講述 1805 年 Gauss 的失傳算法——為 6.3 節 FFT 的計算革命鋪路。DFT 是本書一切理論「落地為數字」的接口。
DFT 的數學結構:有限維正交分解#
矩陣形式: \(X = F_N x\) ,其中 DFT 矩陣 \(F_N = \big[e^{-2\pi i kn/N}\big]_{k,n=0}^{N-1}\) 。核心代數性質:
——** \(N\) 個複指數向量 \(\{w_k\}_{k=0}^{N-1}\) ( \(w_k = \big(e^{2\pi i kn/N}\big)_n\) )是 \(\mathbb{C}^N\) 的正交基: \(\langle w_k, w_m\rangle = N\delta_{km}\) 。DFT 就是把訊號向量投影到這組正交基上——1.3 節的正交投影理論的有限維完整重演**,只是幾何對象從函數換成向量、積分換成求和。
頻率的意義: \(X_k\) 對應的頻率是 \(f_k = \frac{k}{NT}\) Hz( \(T\) 為取樣間隔)。注意:頻率解析度 \(\Delta f = \frac{1}{NT} = \frac{1}{\text{總時長}}\) ——想分辨兩個靠近的頻率,就要更長的觀測時間(與 8.1 節測不準原理的離散版呼應)。 \(k\) 的範圍 \([0, N-1]\) 對應頻率 \([0, \frac{(N-1)f_s}{N}]\) ;由於 \(w_{k + N} = w_k\) (頻譜自動週期化), \(k > \frac{N}{2}\) 的部分等價於負頻率 \(k - N\) ——DFT 的譜以 \(\frac{f_s}{2}\) (奈氏頻率)為對摺軸。**實訊號的 DFT 滿足 \(X_{N-k} = \overline{X_k}\) **(共軛對稱),故有效資訊只在前半段。
三個有限性效應#
效應一:混疊(重溫 6.1 節)。 \(N\) 點取樣 = 時域截斷 + 梳狀取樣,頻譜週期複製;訊號頻寬超過 \(\frac{f_s}{2}\) 必混疊。DFT 看到的第 \(k\) 個頻率箱可能摺疊了多個真實頻率。
效應二:洩漏(leakage)。截斷 \(N\) 點(矩形窗 \(\chi\) )在頻域 = 與 \(\mathrm{sinc}\) 捲積——每個真實譜線的能量「漏」進所有頻率箱。定量:單頻 \(x_n = e^{2\pi i f_0 nT}\) 的 DFT 是 \(\mathrm{Dirichlet\ kernel}\) 型 \(D_N(2\pi(f_0T - k/N)) = \frac{\sin\big(N\pi(f_0T - k/N)\big)}{\sin\big(\pi(f_0T - k/N)\big)}\) ——主瓣寬 \(\frac{2}{NT}\) (兩個箱)、旁瓣衰減 \(\sim\frac{1}{\text{dist}}\) (第一旁瓣 \(-13.3\) dB)。若 \(f_0\) 恰落在箱上(整週期截斷),零洩漏;否則洩漏全譜——「箱上 vs. 箱間」的差異,正是 2.3 節 Gibbs 現象的頻域版本。
效應三:柵欄效應(picket-fence)。DFT 只報告 \(N\) 個箱頻率的值——箱間頻率的能量被「柵欄」遮蔽(看到的能量 = 真能量 × 柵欄增益 \(\le 1\) ,最低 0.81)。對策:零填充(zero-padding,補零到 \(M > N\) 點再 DFT)使柵欄變密——但注意:零填充只加密取樣頻譜、不提高解析度(主瓣寬度由真實時長 \(NT\) 決定)——「看得更密」≠「分得更開」,這是初學者最常見的混淆,也是 8.1 節測不準原理的工程側影。
加窗對策:以 Hann/Hamming/Blackman 窗替代矩形窗——窗函數的譜旁瓣更低(Hann \(-31\) dB、Blackman \(-58\) dB)而主瓣更寬(×2)——用解析度換抑制(3.3 節 Fejér 交換的離散版)。工程決策表:測孤島強訊號用矩形(最窄主瓣)、測弱訊號旁的強訊號用 Blackman(低旁瓣)。
一個具體例題#
例題 6.2.1: \(N = 8\) 點訊號 \(x = (1, 1, 0, 0, 0, 0, 0, 0)\) (寬 2 點的脈衝)。(1)計算 DFT 的全部 \(X_k\) ;(2)驗證 Parseval 能量等式(離散版);(3)解讀譜的形狀與對稱性。
解:
(1) \(X_k = \sum_{n=0}^{1}x_n e^{-2\pi i kn/8} = 1 + e^{-\pi i k/4} = e^{-\pi i k/8}\left(e^{\pi i k/8} + e^{-\pi i k/8}\right) = 2\cos\!\left(\frac{\pi k}{8}\right)e^{-\pi i k/8}\) 。逐值:
| \(k\) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| $ | X_k | $ | 1.848 | 1.848 | 1.414 | 0.765 | 0 | 0.765 |
| \(\arg X_k\) | 0 | \(-22.5°\) | \(-45°\) | \(-67.5°\) | — | \(67.5°\) | \(45°\) | \(22.5°\) |
(2)時域能量 \(\sum|x_n|^2 = 2\) 。頻域 \(\frac{1}{N}\sum|X_k|^2 = \frac{1}{8}\big(1.848^2 + 1.848^2 + 1.414^2 + 0.765^2 + 0 + 0.765^2 + 1.414^2 + 1.848^2\big) = \frac{1}{8}(2\times3.414 + 2 + 2\times0.586 + 2\times2) = \frac{1}{8}(6.829 + 2 + 1.172 + 4) = \frac{16.0}{8} = 2\) ✓(精確值: \(\frac{1}{8}\sum_k 4\cos^2\frac{\pi k}{8} = \frac12\sum_k\left(1 + \cos\frac{\pi k}{4}\right) = \frac12(8 + 0) = 4\cdot\frac12 = 2\) ——等一下, \(\sum_k\cos\frac{\pi k}{4} = 0\) 因為根均勻分布在單位圓上 ✓)。Parseval 成立: \(2 = 2\) 。離散版 Parseval: \(\sum|x_n|^2 = \frac{1}{N}\sum|X_k|^2\) ——3.1 節定理的矩陣版,是 DFT 實現的標準單元測試。
(3)解讀:幅值譜是 \(\left|2\cos\frac{\pi k}{8}\right|\) ——兩點脈衝的譜 = 單點脈衝(平坦)× 兩點窗的譜(餘弦)(乘法定理的離散版:時域延遲差 1 點 → 頻域線性相位 \(\times\) 平坦)。 \(|X_4| = 0\) :奈氏頻率處(交替 ±1 型振盪)與訊號正交。相位線性 \(\arg X_k = -\frac{\pi k}{8}\) :訊號的「重心」在 \(n = 0.5\) (延遲半點)——相位斜坡的斜率 = 時間延遲(4.2 節平移性質的離散版)。一個 8 點的小例子,展示了平移、對稱、Parseval、奈氏摺疊四種結構——DFT 是傅立葉理論的濃縮試管。
歷史啟示#
- Gauss 的失傳算法:1805 年,Carl Friedrich Gauss(1777–1855) 在處理小行星觀測(Pallas 的軌道內插)的手稿中,發明了與 Cooley–Tukey 等價的快速 DFT 算法(以實數餘弦/正弦版)。但他認為太基礎而未發表(以當時語言寫在拉丁文手稿中),直到 Heideman–Johnson–Burrus 1984 年的考古才被發現——FFT 的發明權比電腦早了 160 年,只是沒有「每秒百萬次運算」的需求來催生它。這是「需求催生理論」的反例:理論在、需求遲到。
- DFT 不是 FT 的近似,而是另一個定理:常見誤解「DFT 是連續 FT 的粗糙近似」。正確觀點:DFT 是「週期離散訊號的精確譜」(有限群上的表示論);它與連續 FT 的關係由取樣/截斷的兩條橋(6.1 節)給出,橋上的誤差(混疊、洩漏)是取樣方案的性質,不是 DFT 的性質。把模型誤差歸咎於工具,是數值分析的常見誤診。
- 離散正交基是線性代數的禮物: \(w_k\) 向量 = 循環群 \(\mathbb{Z}/N\) 的不可約表示——DFT 是群論在訊號上的應用。這個觀點(Pontryagin 對偶)將「週期 ↔ 離散」對偶升格為一般群論定理(10.1 節場景)。
與其他章節及領域的關聯#
- 1.3 節:正交投影 → DFT 矩陣的幾何。
- 3.1 節:Parseval 的離散版(本節例題(2))。
- 4.2 節:平移/調變性質的離散對應(循環平移 ↔ 相位斜坡)。
- 5.3 節:Dirac 梳取樣 → 頻譜複製 → DFT 的週期性。
- 6.1 節:取樣定理給出 DFT 與連續譜的橋。
- 6.3 節:FFT——DFT 的快速算法,本節的計算續篇。
- 7.2 節:Z 轉換在單位圓上的取樣恰為 DFT。
- 8.1 節:時長 \(\times\) 帶寬 \(\ge\) 常數的離散版(解析度與觀測時長)。
- 影像/JPEG:2D DCT(DFT 的實變種)是 JPEG 壓縮核心;DCT 與 DFT 的關係 = 邊界對稱化技巧。
練習#
- 手算 \(N = 4\) 的 DFT: \(x = (1, 2, 3, 4)\) 。驗證逆變換還原,並驗證 Parseval( \(\sum x_n^2 = 30 = \frac14\sum|X_k|^2\) )。
- 證明 DFT 的循環平移性質: \(x_{(n-m \bmod N)} \leftrightarrow X_k e^{-2\pi i km/N}\) ,並說明「循環」與 4.2 節「線性平移」的差別(邊界繞回)如何反映「DFT 天生把訊號視為週期」。
- 單頻洩漏實驗:取 \(N = 64\) ,訊號 \(x_n = \cos(2\pi\cdot 7.3 n/64)\) (箱間頻率 7.3)。計算 DFT 幅值譜(可程式化),指出能量在哪些箱、第一旁瓣高度;再以 Hann 窗重做,比較主瓣寬度與旁瓣。
- 零填充練習:把第 3 題訊號補零到 \(N = 256\) 再 DFT。觀察:主瓣寬度(以箱數計)變了嗎?實際頻率解析度(Hz)變了嗎?寫出你對「柵欄 vs. 解析度」的結論。
- 思考題:JPEG 用 8×8 的 DCT(餘弦變換)而非 DFT。查閱並解釋:DCT = 「鏡像延拓後的 DFT 的實部」——邊界連續性使 DCT 洩漏更小、壓縮更高。邊界處理的選擇就是壓縮效率的選擇,聯繫 3.2 節「週期延拓的光滑度」討論。
進階研讀:DFT 的五個深化場景#
場景一:DFT 矩陣的代數。 \(F_N^4 = N^2 I\) (DFT 的四次方是反轉)——矩陣版的 \(\mathcal{F}^4 = I\) (4.2 節); \(F_N\) 的特徵值 \(\pm\sqrt N, \pm i\sqrt N\) 。分數 DFT(矩陣冪 \(F_N^\alpha\) )同樣可定義,用於 Chirp 檢測與加密。有限維的傅立葉代數與連續版完全平行——理論的雙語字典(本章各節反覆使用的對照法)在此完整閉環。
場景二:功率譜估計的統計學。實際訊號含噪,單次 DFT(periodogram)的估計方差不隨 \(N\) 減小(不一致估計!)。對策:Welch 法(分段 + 平均)、Bartlett 法、多窗法(Thomson multitaper 1982)。頻譜估計是統計估計問題——偏差–變異數交換(3.3 節場景四)在這裡以「窗長 vs. 平均段數」的形式重現。Wiener–Khinchin(7.1)給出理論目標:真功率譜 = 自相關的 FT。
場景三:Goertzel 算法與單頻檢測。只需少數幾個頻率箱(如 DTMF 電話撥號音:8 個頻率的 2 中選 1)時,Goertzel 算法(1958)用二階遞迴算單個 \(X_k\) ,成本 \(O(N)\) 每箱——比全 DFT 省算力。演算法選擇隨需求形狀而變:全譜用 FFT(6.3)、稀譜用 Goertzel——6.3 節的「算法景觀」預告。
場景四:質數長度與 Rader/Winograd。 \(N\) 為質數時 Cooley–Tukey 分解失效——Rader 算法(1968) 把質數 DFT 化為循環捲積(用原根的群同構)、Winograd 算法(1976–78) 用中國剩餘定理與最少乘法數的理論,把小因子 DFT 做到乘法數近下界。群論與代數數論進入算法設計——DFT 的計算理論本身成為數學分支。
場景五:頻譜分析的儀器視角。頻譜分析儀(spectrum analyzer)的「RBW(解析度頻寬)」旋鈕 = 本節的窗長選擇;「SPAN」= 取樣率;「平均」= Welch。儀器面板上每個旋鈕都是一個數學參數——讀懂本節即讀懂儀器手冊。實驗室技能與數學理論的直接映射,是本章的實用價值所在。
補充:窗函數家族一覽#
| 窗 | 主瓣寬(箱) | 第一旁瓣 | 應用 |
|---|---|---|---|
| 矩形 | 2 | \(-13.3\) dB | 整週期訊號、孤島頻率 |
| Hann | 4 | \(-31.5\) dB | 通用預設 |
| Hamming | 4 | \(-42.7\) dB | 語音處理 |
| Blackman | 6 | \(-58.1\) dB | 高動態範圍 |
| Kaiser(可調 β) | 可調 | 可調 | 參數化折衷 |
| Flat-top | 10 | \(-93\) dB | 幅值精度(校準) |
「窗 = 權函數」:選窗 = 選 1.3 節意義下的內積權重。Kaiser 窗以 Bessel 函數 \(I_0\) 參數化,連續調節主瓣–旁瓣曲線——窗設計是連續優化問題,其理論(離散長球函數,Slepian 1961,10.2 節將再登場)是 20 世紀調和分析的精美支線。
名詞速查表(本節出現的核心術語)#
- DFT: \(X_k = \sum x_n e^{-2\pi ikn/N}\) ;有限點訊號的正交譜分解。
- DFT 矩陣 \(F_N\) : \(F_N^*F_N = NI\) ;正交基 \(\{w_k\}\) 。
- 頻率箱: \(f_k = \frac{k}{NT}\) ;DFT 的報告點。
- 頻率解析度 \(\Delta f = \frac{1}{NT}\) :由觀測時長決定。
- 洩漏:截斷窗的 sinc 捲積;箱間頻率能量擴散。
- 柵欄效應:箱頻率取樣遮蔽箱間能量。
- 零填充:補零加密箱距(不提高解析度)。
- 加窗:Hann/Hamming/Blackman/Kaiser;解析度換旁瓣抑制。
- 週期性 / 共軛對稱: \(X_{k+N} = X_k\) 、 \(X_{N-k} = \overline{X_k}\) 。
- 離散 Parseval: \(\sum|x_n|^2 = \frac1N\sum|X_k|^2\) 。
- periodogram / Welch:功率譜估計的基元與改進。
- Goertzel 算法:單頻箱的 \(O(N)\) 遞迴。
年表速查(本節涉及的關鍵年份)#
- 1805:Gauss 手稿中的快速 DFT(未發表)。
- 1822:Fourier 積分理論(連續版本的誕生)。
- 1942:DFT 作為數值方法的系統化(Danielson–Lanczos 已有分治思想!1942)。
- 1958:Goertzel 算法。
- 1961:Slepian 離散長球序列(窗設計理論)。
- 1965:Cooley–Tukey FFT(6.3 節)。
- 1968:Rader 質數算法。
- 1976–78:Winograd 最小乘法算法。
- 1982:Thomson 多窗譜估計。
- 1984:Heideman–Johnson–Burrus 考古確認 Gauss 優先權。
- 1992:JPEG 標準(DCT 壓縮普及)。
深化問答三則#
問:DFT 的「頻率」和物理頻率是什麼關係? 答: \(f_k = \frac{kf_s}{N}\) ,且以 \(\frac{f_s}{2}\) 為鏡。DFT 的頻率軸完全由取樣率與點數決定,與訊號內容無關——這既是便利(座標固定)也是陷阱(混疊把箱外頻率偷渡進箱內)。讀 DFT 圖的第一步永遠是確認 \(f_s\) 與 \(N\) 。
問:解析度不足時,該加點數還是加時長? 答:加時長(觀測更多真實數據)才提高解析度;補零(加 \(N\) 不加數據)只加密柵欄。口訣:「解析度用真數據買,密度用零填充買」。儀器上「平均時間」旋鈕 = 真解析度,「顯示點數」= 柵欄密度。
問:實訊號的 DFT 為什麼有負頻率一半的冗餘? 答:實數的譜共軛對稱( \(X_{N-k} = \overline{X_k}\) ,來自 \(\overline{e^{-i\theta}} = e^{i\theta}\) 與 \(x_n\) 實值)——負頻率資訊與正頻率完全重複。這解釋了(1)實訊號譜圖的鏡像對稱;(2)為何可定義「實 DFT」(DCT/DST)省一半計算;(3)複訊號(IQ 取樣,7.3 節)無對稱冗餘——SDR 用複取樣把頻譜效率翻倍,正是「買斷對稱性」的代價與收益。
(本節完)