第一步:如何正確取樣訊號?

在進行任何頻譜分析之前,必須先從連續的真實世界訊號中,擷取出一連串的離散數位訊號點。這個過程稱為「取樣」。如果第一步就做錯了,後面的 FFT 分析將會是徒勞無功。

黃金法則:奈奎斯特-香農取樣定理

為了要能忠實地捕捉一個訊號,取樣頻率 (Fs),必須至少是訊號中感興趣的最高頻率 (f_max) 的兩倍

Fs ≥ 2 * f_max

如果違反了這個定理(取樣取得太慢),就會發生「混疊 (Aliasing)」,高頻的訊號會偽裝成低頻的訊號,造成頻譜失真,就像用慢速快門相機拍高速旋轉的輪胎,看起來像在倒轉一樣。

💡 實務上的建議

理論上兩倍就夠了,但在工程實務中,通常會保留一個安全邊際,選擇 Fs 為 f_max 的 5 到 10 倍。這麼做的好處是:

  • 可以放寬對硬體「抗混疊濾波器」的要求。
  • 能更清楚地觀察訊號的波形。
  • 避免頻譜邊緣的效應。

所以,規則是:可以遠高於兩倍,但絕不可少於兩倍!

第二步:FFT 核心參數設定

當根據訊號特性決定了取樣頻率 (Fs) 後,接下來就可以設定 FFT 分析的參數。Fs 和決定的 FFT 點數 (N) 將共同決定頻譜的「解析度」與「範圍」。

頻率解析度 (Δf)

0.1 Hz

💡 核心觀念:Ts, T, 與 Δf 的關係

取樣頻率 Fs,總取樣點數 N,與總觀測時間 T 的關係如下,它們共同決定了最終的頻率解析度 Δf

  • Ts (取樣週期):採集單一一個點所需的時間。公式為 Ts = 1 / Fs
  • N (總取樣點數):總共採集了多少個數據點。
  • T (總觀測時間):整個取樣過程的總長度。公式為 T = N * Ts = N / Fs

因此,頻率解析度 Δf = 1 / T 是由整個訊號的總長度 T 決定的,而不是由單次取樣的間隔 Ts 決定的。

3. 輸入訊號的影響:實數 vs. 複數

在通訊等領域,訊號常以複數形式(IQ 訊號)存在,它能完整表達振幅與相位。但更常見的情況是,從感測器得到的訊號是純實數(虛部為零)。當輸入訊號只有實部時,其輸出頻譜必然會是對稱的。

💡 實數訊號的對稱性:為何只看一半?

簡單來說,傅立葉轉換是將訊號分解成一系列的旋轉向量。要合成一個純實數訊號,必須有成對的、頻率相同但旋轉方向相反(一個 +f,一個 -f)的向量,它們的虛部才能互相抵消。這種成對的關係,導致了頻譜的「共軛對稱」。

在 FFT 的標準輸出中,負頻率的部分會被摺疊到頻譜的後半段。因此,後半段的資訊只是前半段的鏡像,是多餘的。

舉例來說:若取樣率 Fs = 100 Hz,FFT 點數 N = 1000,則頻率解析度為 0.1 Hz。FFT 會輸出 1000 個點,對應 0 Hz99.9 Hz 的頻譜。

  • 真正有用的資訊只在 0 Hz ~ 50 Hz (Fs/2) 的範圍內。
  • 50.1 Hz 的值會等於 49.9 Hz 的值,99.9 Hz 的值會等於 0.1 Hz 的值,依此類推,形成鏡像。

這就是為什麼處理實數訊號時,我們只分析到奈奎斯特頻率 (Fs/2) 的原因。

4. FFT 點數與補零 (Zero Padding)

如果訊號長度不是 2 的次方怎麼辦?或者,想讓頻譜圖看起來更平滑,該怎麼做?這時「補零」就派上用場了。它指的是在原始訊號的尾端補上一連串的 0。觀察補零前後,頻譜圖發生了什麼變化。

💡 原始訊號 (Original Signal):

假設原始訊號長度較短,FFT 在頻率軸上的取樣點較少,因此頻譜圖看起來比較粗糙,可能無法精確顯示峰值的位置。

深度剖析:補零與內插的關係

補零在時域上的簡單操作,其背後隱含著深刻的頻域意義。它與「內插」有著密不可分的關係。

1. 補零 (Zero Padding)
  • 做法:在時域訊號的尾端補上 0。
  • 效果:改變 FFT 長度 N,讓頻域取樣點變多。因為頻率間隔 Δf = Fs / NN 變大,頻率軸就變得更細密。
  • 本質:頻域上產生的是一種「內插後的頻譜曲線」。這些額外的頻率點,其數值完全由數學公式決定,不包含新的訊號訊息。
2. 內插 (Interpolation)
  • 做法:在已知離散頻譜點之間,用數學方法(例如 sinc 內插、多項式內插)估算新的點。
  • 效果:產生一條更光滑的頻譜曲線。
  • 本質:其結果與補零等價,只是實現的路徑不同。
3. 兩者關係:一個等式的兩面

可以這樣理解:在時域補零,就等同於在頻域進行一種 sinc 內插。

所以,補零雖然看起來只是「增加點數」,其本質其實就是一種「自動完成的頻域內插」。

4. 核心區別
  • 補零:是一種計算上的技巧,透過延長訊號長度讓 FFT 自然產生更細密的頻率軸。
  • 內插:是一種數學上的估算方法,直接在已有的頻譜上進行插值。

5. 實務議題與處理順序

理論之外,實際應用 FFT 時會遇到幾個常見的陷阱與固定的處理順序。了解這些議題能幫助正確解讀頻譜,避免得到錯誤的結論。

鐵則:先 Windowing,再 Zero Padding

這是 FFT 預處理中最重要的順序問題。

1. Windowing 的目的

原始訊號是有限長度的截取樣本,等效於被一個「矩形窗」截斷,這會造成嚴重的頻譜洩漏。因此要先乘上合適的窗函數(如 Hamming, Hanning)來減少洩漏。這個步驟必須在「原始訊號區間」完成。

2. Zero Padding 的目的

補零只是延長訊號長度以增加 FFT 點數,作用僅是讓頻譜顯示得更平滑。它必須在 Windowing 之後進行,避免把「0」也乘上窗函數,進而破壞窗的形狀與能量分布。

✅ 正確順序總結

對原始訊號加窗 (Windowing) 減少頻譜洩漏

補零 (Zero Padding) 增加頻譜顯示平滑度

取樣定理 (Nyquist)

這是第一步的基礎,取樣率 (Fs) 必須至少為最高訊號頻率的 2 倍。否則發生「混疊 (Aliasing)」,頻譜失真。

能量歸一化

FFT 的輸出幅度與 N 有關。要得到有物理意義的振幅或功率,需要進行歸一化處理(例如,除以 N 或 N/2),並考慮窗函數的影響。

6. 實務訊號處理流程 (IQ訊號範例)

以下提供一個從「IQ 取樣」開始的實務訊號處理流程。本節將專注在「路線 A:頻譜/量測」上,並對其中幾個關鍵步驟進行深入說明。

路線 A|頻譜/量測 (Spectrum/Measurement)

IQ 流 去直流/去趨勢 頻率平移(可選) 帶通/低通濾波 視窗(Windowing) 補零(Zero Padding) FFT 頻率校正 功率譜估計(PSD) 量測 可視化

關鍵步驟詳解:

1. 去直流/去趨勢 (DC offset & Detrend)

目的:訊號中固定的直流偏移(平均值不為零)會在頻譜的 0 Hz 處產生一個巨大的尖峰,這個尖峰會透過頻譜洩漏污染整個頻譜,掩蓋低頻區域的真實訊號。必須移除它。

做法:最簡單的方式是將整個訊號序列減去其平均值:y[n] = x[n] - mean(x)

2. 頻率校正 (Frequency Correction)

目的:FFT 的原始輸出範圍是從 0Fs,這在數學上正確但物理上不直觀。我們通常更關心以 0 Hz 為中心的頻譜(從 -Fs/2+Fs/2),這樣才能清楚地看到正負頻率成分。

做法:執行 fftshift 操作。這個操作會將頻譜的後半段(Fs/2Fs)搬移到前半段的前面,完成座標的轉換。

3. 功率譜估計 (Power Spectral Density - PSD)

目的:FFT 的原始幅度 |X[k]| 會隨 FFT 點數 N 變化,不適合直接比較。PSD 則是表示單位頻寬內的訊號功率,經過正規化後,其結果與 N 無關,是更具物理意義的量測標準。

做法:計算公式為 PSD[k] = |X[k]|^2 / (N * U)。其中 |X[k]|^2 是 FFT 幅度的平方,N 是 FFT 點數,而 U 是所選窗函數的能量正規化因子,用來補償加窗時損失的能量。

路線 B|通訊解調 (參考)

IQ 流 頻率/時序校正 重取樣 IQ失衡校正 AGC 匹配濾波 定時/載波回復 均衡 符號判決 解碼