2.5 有限冲激响应(FIR)滤波器
2.5 有限冲激响应(FIR)滤波器
在此阶段,我们知道,大多数实际感兴趣的信号可以看作是不同频率下振荡的复数正弦波的总和。这些正弦波的幅度和相位决定了该信号的频率内容,分别通过幅度响应和相位响应表示。在数字信号处理(DSP)中,设计的目标是以预定的方式修改输入信号的频率内容,以获得所需的输出。这种操作称为滤波(filtering) ,它是整个DSP领域中最基本的操作。
可以设计一个系统或滤波器,使信号中的某些期望的频率内容通过该系统,方法是对这些频率的 H ( F ) ≈ 1 H(F) \approx 1 H(F)≈1 进行指定,而其他频率内容可以通过对 H ( F ) ≈ 0 H(F) \approx 0 H(F)≈0 进行指定来抑制(尽管这个想法是正确的,但正如我们将很快看到的,这并不是一项简单的任务)。这个概念类似于一个水过滤器,它处理水中的杂质,以及一个油过滤器,它去除发动机油中的污染物。术语低通、高通和带通则表示的是对需要通过的频谱内容的直观感知,其中低、高手以及带通分别表示需要通过的频谱内容,同时阻止其余的内容。
滤波器频率响应
图2.15:理想的低通滤波器具有砖墙响应
图2.15显示了理想低通滤波器的幅度响应 ∣ H ( F ) ∣ |H(F)| ∣H(F)∣(作为连续频率的函数)。低通滤波器通过接近0的频率,同时阻挡其余频率。在连续频率的世界中,只有中间的滤波器存在。然而,在采样的世界中,滤波器的频率响应——就像采样信号一样——以采样频率 F s F_s Fs 的间隔重复,且两侧存在无限个频谱副本,如图2.15中的虚线所示。采样频率响应的基带范围是从 − 0.5 F s -0.5F_s −0.5Fs 到 + 0.5 F s +0.5F_s +0.5Fs,在红色虚线内显示。
另一方面,高通滤波器通过正频率和负频率接近 ± 0.5 F s \pm 0.5F_s ±0.5Fs 的频率,同时阻止其他所有频率,这可以通过 0.5 F s 0.5F_s 0.5Fs 附近的对称性观察到。
图2.16:理想的高通滤波器
类似地,带通滤波器只允许频谱中这两个极端之间的特定部分通过。
FIR滤波器设计
由于滤波器是修改信号频谱内容的系统,因此它自然也具有脉冲响应。当这种脉冲响应的长度是有限的时,这种滤波器称为有限冲激响应(FIR)滤波器,它是离散时间序列,其样本称为滤波器系数。
我们可以通过简单地计算理想频率响应 H ( F ) H(F) H(F) 的逆变换来完成这一任务。由于理想滤波器具有统一的通带和零阻带,并且两者之间有直接的过渡(类似于矩形信号),这种有限频域支持会产生无限的脉冲响应,因此是不可实现的。为什么?因为矩形信号在连续频域中的逆变换是时间域中具有无限支持的正弦信号。
假设这种逆变换仍然获得并采样以生成离散时间信号 h [ n ] h[n] h[n]。当它在两侧被截断时,相当于将理想的无限信号 h [ n ] h[n] h[n] 乘以一个矩形窗 w Rect [ n ] w_{\text{Rect}}[n] wRect[n],公式如下:
h Truncated [ n ] = h [ n ] ⋅ w Rect [ n ] h_{\text{Truncated}}[n] = h[n] \cdot w_{\text{Rect}}[n] hTruncated[n]=h[n]⋅wRect[n]
如前所述,加窗(windowing) 是将无限序列修剪为有限长度的过程。我们知道时间域中的相乘相当于频率域中的卷积,而时间域矩形窗的频谱是sinc信号。因此,理想滤波器的频谱与该sinc信号的频谱卷积产生滤波器的实际频率响应 H ( F ) H(F) H(F):
H ( F ) = 理想砖墙响应 ⋅ sinc ( F ) H(F) = \text{理想砖墙响应} \cdot \text{sinc}(F) H(F)=理想砖墙响应⋅sinc(F)
如图2.17所示。该频域的sinc信号具有主瓣,并且从 − ∞ -\infty −∞ 延伸到 ∞ \infty ∞ 的衰减振荡。
- 这些衰减振荡的卷积是实现FIR滤波器在通带和阻带中始终表现出波纹的原因。
- 当sinc信号的主瓣与砖墙频谱卷积时,它在通带和阻带之间生成过渡带。自然,这个过渡带的带宽等于sinc主瓣的宽度,反过来又取决于时间域中矩形窗的长度。
图2.17:时间域中脉冲响应截断过程及其在频率域中的影响。
最终,通过窗口进行截断使FIR滤波器具有有限时长的脉冲响应 h [ n ] h[n] h[n]。
左侧时间域部分:
- h [ n ] h[n] h[n] 是理想的无限冲激响应信号。
- 当它与矩形窗 w Rect [ n ] w_{\text{Rect}}[n] wRect[n] 相乘时,得到了截断的信号 h Truncated [ n ] h_{\text{Truncated}}[n] hTruncated[n],即截断后的有限脉冲响应。
右侧频率域部分:
- 理想砖墙频率响应与 sinc 函数频谱(通过窗口截断)卷积后,生成实际频率响应 H ( F ) H(F) H(F) 。
- 此外,卷积会引入衰减波纹和过渡带宽度(如图所示)。
滤波器阻带中出现的旁瓣、过渡带的带宽和通带中的波纹特性表征了滤波器的性能。通常以分贝(dB) 为单位表示这些参数。滤波器的dB值公式如下:
[ H ( F ) ] dB = 20 log 10 ∣ H ( F ) ∣ [H(F)]_{\text{dB}} = 20\log_{10}|H(F)| [H(F)]dB=20log10∣H(F)∣
应记住,上述公式中的乘法因子20在电压或电流平方等功率转换中被替换为10。将幅度转换为dB值的优点在于它便于绘制小到极大的数量值,从而在一张图中清晰显示。
根据表2.2中的参数设计滤波器,并在图2.18中以图形方式展示。
FIR滤波器设计的基本任务是找到滤波抽头(或系数) 的值,这些值可以转换为所需的频率响应。为此,许多软件工具可用。一种标准的FIR滤波器设计方法是Parks-McClellan算法。该算法是一个迭代算法,用于找到最优的FIR滤波器,使得期望频率响应与实际频率响应之间的最大误差最小化。
使用该算法设计的滤波器具有在其频率响应中的等波纹行为,有时称为等波纹滤波器。等波纹一词意味着通带和阻带内的波纹相等,但不一定在两个带内都相等。
表2.2:滤波器规范参数
参数符号 | 参数说明 |
---|---|
F S F_S FS | 采样率(Sample rate) |
F pass F_{\text{pass}} Fpass | 通带边缘频率(Passband edge frequency) |
F stop F_{\text{stop}} F |