FIR滤波器

**有限脈衝響應**（英語：Finite impulse response，縮寫 FIR）濾波器是其脈衝響應為有限長度的濾波器，脈波輸入訊號的響應會在有限時間內變為零，此特性和無限脈衝響應（IIR）濾波器相反，無限脈衝響應濾波器存在反饋迴路，其脈衝響應可能是無限長度的（不過一般會衰減）。

N 階離散時間的 FIR 濾波器，其脈衝響應（對應克羅內克 δ 函數輸入的輸出）在變為零之前，最多只持續 $N+1$ 個取樣點（從第一個非零取樣點，到最後一個非零取樣點）。

FIR 濾波器可以是連續時間的，也可能是離散時間的，可以是數位的，也可能是類比的。

## 定義

針對因果離散時間的 N 階濾波器，輸出序列的每一個值都是最近輸入的加權和：

　
: ${\begin{aligned}y[n]&=b_{0}x[n]+b_{1}x[n-1]+\cdots +b_{N}x[n-N]\\&=\sum _{i=0}^{N}b_{i}\cdot x[n-i],\end{aligned}}$

其中

 * $x[n]$ 是輸入訊號
* $y[n]$ 是輸出訊號
* $N$ 是濾波器階數。 $N$ th 階濾波器表示在右邊有 $N+1$ 項
* $b_{i}$ 是 $N^{\text{th}}$ 階 FIR 濾波器在第 i 時間（ $0\leq i\leq N$ ）的脈波響應。若濾波器是直接型的 FIR 濾波器，則 $b_{i}$ 也就是濾波器的係數。

計算也稱為離散摺積。

上述項中的 $x[n-i]$ 常稱為 tap（抽頭），依數位延遲線的結構而定，在許多實現或方塊圖中，會將延遲輸入進行乘法運算。

濾波器的衝激響應定義為有限區間內的非零值。包括零值在內，衝激響應是無限數列：

　
: $h[n]=\sum _{i=0}^{N}b_{i}\cdot \delta [n-i]={\begin{cases}b_{n}&0\leq n\leq N\\0&{\text{otherwise}}.\end{cases}}$

若 FIR 濾波器是非因果的，其脈衝響應上的非零值範圍可能從 $n=0$ 前就開始。

## 特性

FIR 濾波器相較於 IIR 濾波器，有以下的優點：

* 不需要回授，因此捨去誤差不會因為連續的加總而累計。每一次的計算其相對誤差都是一樣的，因此在實現上比較簡單。
* 在本質上穩定，因為其輸出是有限個輸入值乘以有限倍數的和，因此不會大於 $\sum |b_{i}|$ 乘以輸入的最大值。
* 若讓係數對稱，可以設計成線性相位，這在一些相位很重要的應用（例如資料通訊、地震學或分音器）中是很好的特性。

FIR 濾波器的主要缺點是若要求要求低頻（相對於取樣率）截止頻率，在相同的銳利程度或是選擇性情形下，在通用處理器上的運算量要比 IIR 濾波器要大。不過目前有許多數位訊號處理器提供特別的硬體來使 FIR 濾波器有類似 IIR 濾波器一樣有效率。

## 頻率響應

數列 $x[n]$ 的濾波效果可以用摺積定理，在頻域上描述：

　
: $\underbrace {{\mathcal {F}}\{x*h\}} _{Y(\omega )}=\underbrace {{\mathcal {F}}\{x\}} _{X(\omega )}\cdot \underbrace {{\mathcal {F}}\{h\}} _{H(\omega )}$     and     $y[n]=x[n]*h[n]={\mathcal {F}}^{-1}{\big \{}X(\omega )\cdot H(\omega ){\big \}},$

其中運算子 ${\mathcal {F}}$ 和 ${\mathcal {F}}^{-1}$ 表示離散時間傅立葉變換（DTFT）和其倒數。因此，複數值的乘性函數 $H(\omega )$ 是濾波器的頻率響應，可以用以下的傅立葉級數定義：

　
: $H_{2\pi }(\omega )\ \triangleq \sum _{n=-\infty }^{\infty }h[n]\cdot \left({e^{i\omega }}\right)^{-n}=\sum _{n=0}^{N}b_{n}\cdot \left({e^{i\omega }}\right)^{-n},$

其中加上下標表示 2π 週期性。此處的 $\omega $ 是正規單位（radians/sample）下的頻率。在許多濾波器設計的程式中都較常用 $\omega =2\pi f,$ 的定義，將頻率單位 $(f)$ 改為 cycles/sample，其週期為 1。當 x [n] 序數是已知的取樣率 $f_{s}$ _samples/second_， $\omega =2\pi f/f_{s}$ 的取代會將頻率單位 $(f)$ 變為 _cycles/second_（赫茲），週期性是 $f_{s}$ 。 $\omega =\pi $ 的值會對應 $f={\tfrac {f_{s}}{2}}$ _Hz_ $={\tfrac {1}{2}}$ _cycles/sample_ 的頻率，也就是奈奎斯特頻率。

 $H_{2\pi }(\omega )$ 也可以用濾波器衝激響應的離散時間傅立葉轉換表示：

　
: ${\widehat {H}}(z)\ \triangleq \sum _{n=-\infty }^{\infty }h[n]\cdot z^{-n}.$

　
: $H_{2\pi }(\omega )=\left.{\widehat {H}}(z)\,\right|_{z=e^{j\omega }}={\widehat {H}}(e^{j\omega }).$

## 濾波器設計

在設計有限脈衝響應濾波器時，要找到符合特定規格的係數以及階數，規格可能是時域的（匹配濾波器），也可能是頻域的（較常見的情形）。匹配濾波器是將輸入訊號和已知形狀的脈波進行互相關（cross-correlation）。FIR 摺積（FIR convolution）是脈波響應的逆時間複本（time-reversed copy）和輸入訊號進行互相關。因此匹配濾波器的脈波是用針對已知脈波進行取樣，再將取樣訊號倒序，做為濾波器的係數。

若希望有特定的頻率響應，以下是一些常見的濾波器設計方式：

1. 窗函數設計法
2. 頻率取樣法
3. 最小 MSE（均方差）法
4. 帕克斯 - 麥克萊倫演算法（也稱為是等漣波法、最佳法或 minimax 法）常會用雷米茲演算法來找最佳等漣波的係數。使用者會標示想要的頻率響應，此響應下誤差的加權函數，以及濾波器階數 N。演算法會找到可以將最大偏移量降到最低的 $N+1$ 個係數。直覺上，這可以找到在只用 $N+1$ 下，最符合期望頻率響應的濾波器。此方式特別容易實作，因為至少有一本教科書有包括可以用理想濾波器以及階數 _N_，得到最佳係數的程式。
5. 等漣波 FIR 濾波器也可以用 DFT 演算法設計。此方式在本質上是迭代的，初始濾波器計設計的 DFT 可以用 FFT 演算法計算（若沒有初始估計值，可以用 h [n]=delta [n]）。在傅立葉域下，可以依要想的規格調整頻率響應，接著計算反 DFT。在時域下，只保留前 N 個係數（其他係數設為 0），之後再重覆上述的流程：再計算 DFT，在頻率下調整，再轉回時域。

目前已有許多軟體可以進行濾波器設計，例如 MATLAB、GNU Octave、Scilab 和 SciPy 等。

## 移動平均濾波器的例子

移動平均濾波器是簡單的 FIR 濾波器，有時會稱為 Boxcar 函數濾波器（特別在之後有降取樣的情形下）。濾波器的係數 $b_{0},\ldots ,b_{N}$ 可以用以下公式求得：

　
: $b_{i}={\frac {1}{N+1}}$

以下是更具體的例子，選擇濾波器的階數：

　
: $N=2$

其沖激響應如下：

　
: $h[n]={\frac {1}{3}}\delta [n]+{\frac {1}{3}}\delta [n-1]+{\frac {1}{3}}\delta [n-2]$

右邊的方塊圖是以下要討論的二階移動平均濾波器。其遞移函數為：

　
: $H(z)={\frac {1}{3}}+{\frac {1}{3}}z^{-1}+{\frac {1}{3}}z^{-2}={\frac {1}{3}}{\frac {z^{2}+z+1}{z^{2}}}.$

下一個圖是濾波器的極零點圖。零頻率（直流）對應 (1, 0)，正頻率會繞原點逆時針旋轉，直到 (−1, 0) 的奈奎斯特頻率。在原點有二個極點，二個零點在 $z_{1}=-{\frac {1}{2}}+j{\frac {\sqrt {3}}{2}}$ ， $z_{2}=-{\frac {1}{2}}-j{\frac {\sqrt {3}}{2}}$ 。

若以正規化頻率 _ω_ 表示，頻率響應為：

　
: ${\begin{aligned}H\left(e^{j\omega }\right)&={\frac {1}{3}}+{\frac {1}{3}}e^{-j\omega }+{\frac {1}{3}}e^{-j2\omega }\\&={\frac {1}{3}}e^{-j\omega }\left(1+2cos(\omega )\right).\end{aligned}}$

圖上有其振幅和相位的響應，不過此圖也可以用脈衝響應的離散傅立葉轉換得到

因為其對稱性，濾波器設計或是顯示軟體多半只會顯示 [0, π] 區域。可以看出移動平均濾波器的低頻增益接近 1，但會衰減高頻的訊號，因此是簡單的低通濾波器。相位圖是線性的，但在增益降到零時出現不連續，不連續的大小是 π，意思是有變號的情形。最後一張圖的振幅允許正負，此時的相位就都是線性的。

## 參考文獻

* Jian-Jiun Ding (2013), Advanced Digital Signal Processing （頁面存檔備份，存於網際網路檔案館） [viewed 27/06/2013]

## 註解

## 相關條目

* 數位訊號處理
* 數位濾波器
* 電子濾波器
* 濾波器
* 無限脈衝響應（IIR）
* Z 轉換
* FIR 傳遞函數
* 濾波器設計
* 級聯積分器 — 梳狀濾波器
* 支撐集