Skip to content

10 FIR Digital Filter Design

字数 6,022阅读时间 13 分钟Ayaskt
2026/06/16 00:03:58 CST

坚守着你所厌恶的爱情的我,和你的相位逐渐变得错位。

alt text

章节目录

10-1 FIR 设计概述 FIR Design Overview

10-1-1 基本目标 Basic Objective

FIR 数字滤波器设计通常直接逼近给定的数字频率响应,并附加线性相位要求。

长度为 、阶数为 的因果 FIR 滤波器满足:

设计任务主要确定以下量:

  • 阶数 ,即系数个数
  • 冲激响应 ,即 FIR 的全部抽头系数。

10-1-2 线性相位条件 Linear Phase Condition

线性相位 FIR 的相位可以写成:

对于长度 的常用线性相位 FIR,

等价地,冲激响应关于中点对称或反对称:

本章主要处理对称情形。对称 FIR 适合设计低通、高通、带通和带阻幅频滤波器。


10-1-3 设计指标 Digital Filter Specifications

常见指标包括:

  • 通带边缘频率
  • 阻带边缘频率
  • 通带纹波
  • 阻带纹波 或最小阻带衰减
  • 过渡带宽度

若用 dB 指标描述,阻带衰减通常写作:

通带纹波若围绕 1 对称,可由 近似换算为:

FIR 阶数可以先粗估。Kaiser 经验公式的一种常见形式为:

Bellanger 公式为:

这些公式给出初始阶数。最终仍需验证实际频响是否满足指标。

10-2 理想滤波器与截断 Ideal Filters and Truncation

10-2-1 从理想频响得到冲激响应 Ideal Impulse Response

设理想频率响应为 ,对应的理想冲激响应为 。由 DTFT 反变换:

大多数理想滤波器的 为无限长序列,因此不能直接实现。FIR 设计的基本思路是用有限长序列 逼近它:

对应频域为:


10-2-2 典型理想滤波器 Typical Ideal Filters

alt text

理想低通的频率响应为:

对应冲激响应:

理想高通可由单位冲激减去低通得到:

理想带通的两个截止频率为

理想带阻为单位冲激减去带通:

NOTE

四类理想响应都可由频域矩形函数的反变换得到。低通对应 sinc 形式,其余几类可由低通响应的平移、相减或谱反转得到。


10-2-3 最小均方意义下的截断 Truncation in MSE Sense

定义积分平方误差:

由 Parseval 关系:

若只保留 的有限长度,则误差可以写成:

时,第一项为 0, 最小。因此,在均方误差意义下,截断给出有限长最佳逼近。

截断后的序列仍以 为中心,是零相位形式。为了得到因果 FIR,需要整体右移

,则低通因果 FIR 可写成:

10-3 窗函数法 Window Method

10-3-1 Gibbs 现象 Gibbs Phenomenon

alt text

直接截断相当于乘上矩形窗。频域中,理想频响的突变边缘会被窗函数频谱的主瓣和旁瓣扩散,从而产生纹波。

增大长度 时:

  • 通带和阻带中的纹波数量增加;
  • 纹波宽度变窄;
  • 过渡带变窄;
  • 最大纹波高度不会随长度增加而消失。

该现象称为 Gibbs 现象 Gibbs Phenomenon。对于不连续频响,矩形截断无法完全消除边缘过冲;增大长度主要使过冲集中在更窄的频带附近。


10-3-2 窗函数与频域卷积 Windowing and Frequency Convolution

截断可以改写为窗函数操作:

时域相乘对应频域周期卷积:

其中 是窗函数 的 DTFT。

窗函数的主瓣宽度决定过渡带宽度,旁瓣面积决定通带和阻带纹波。二者存在折中关系。

IMPORTANT

主瓣越窄,过渡带越窄;旁瓣越低,纹波越小。固定窗函数预先给出这两个目标之间的折中。


10-3-3 固定窗函数 Fixed Windows

alt text

以下窗函数均采用中心化写法,定义在 ,长度为

矩形窗:

其频谱为:

Hann 窗:

Hamming 窗:

Blackman 窗:

固定窗函数的性质如下:

窗函数 Type主瓣宽度 相对旁瓣电平 最小阻带衰减 过渡带宽
Rectangular
Hann
Hamming
Blackman

矩形窗主瓣最窄,但旁瓣最高。Blackman 窗旁瓣最低,但主瓣最宽。

10-4 Kaiser 窗 Kaiser Window

10-4-1 Kaiser 窗定义 Definition

Kaiser 窗是可调窗函数。仍使用中心化定义:

其中 是零阶第一类修正 Bessel 函数:

控制窗函数形状。 越大,旁瓣越低,但主瓣也越宽。


10-4-2 参数估计 Parameter Estimation

设目标阻带衰减为 ,Kaiser 窗的 取:

阶数估计为:

其中 使用弧度频率。实际设计中取上整,再根据所需的线性相位类型调整奇偶性。

10-5 窗函数法例题 Window Method Examples

10-5-1 由数字指标选择窗函数 Selecting a Window

设计线性相位 FIR 低通滤波器:

取截止频率为过渡带中点:

理想低通冲激响应:

根据 ,Hann 窗已经满足 的阻带衰减要求。

Hann 窗:

因果 FIR 为:

其中 时取极限值

若改用 Hamming 窗:

若改用 Blackman 窗:

若改用 Kaiser 窗:


10-5-2 低通与高通设计 Lowpass and Highpass Design

alt text

低通例题指标:

  • 通带边缘
  • 阻带边缘
  • 阻带衰减
  • 采样频率

过渡带宽:

截止频率取中点:

选 Hamming 窗。其最小阻带衰减约为 ,满足 指标。

有限长因果低通为:

Hamming 窗为:

最终系数为:

高通设计将理想低通替换为理想高通:

窗函数和阶数不变:

10-6 频率采样法 Frequency Sampling Method

10-6-1 基本方法 Basic Method

alt text

频率采样法直接在频域近似目标频率响应。设 FIR 长度为 ,采样点为:

令:

再用 IDFT 得到系数:

若要求 Type I 线性相位,且 为偶数,则频域样本常写成:

其中 是实偶对称的幅度采样值:

过渡带可以放入若干个采样点。经验表如下:

过渡带采样点数 123
阻带最小衰减

长度估计:


10-6-2 频率采样例题 Design Examples

设长度 ,幅度采样为:

由于 ,线性相位为:

于是:

非零项为:

IDFT 得:

另一组按指标设计的低通为:

查表取 ,则:

取奇长度

通带采样点数为:

幅度采样可写为:

其中 是过渡带采样值,通常在 之间选取。然后代入 IDFT:

10-7 MATLAB FIR 设计 MATLAB FIR Design

10-7-1 常用函数 Common Functions

MATLAB 中固定窗可以直接生成:

matlab
W = hann(L);
W = hamming(L);
W = blackman(L);
W = kaiser(L, beta);

fir1 用于设计常规低通、高通、带通、带阻和多带 FIR:

matlab
b = fir1(N, Wn);
b = fir1(N, Wn, 'ftype');
b = fir1(N, Wn, window);

其中:

  • N 是 FIR 阶数;
  • Wn 是归一化截止频率,范围为 ,对应
  • window 的长度应为 N+1
  • ftype 可取 'high''bandpass''stop' 等。

fir2 用于任意形状幅频响应的 FIR 设计。


10-7-2 kaiserord 与 fir1 Kaiserord and fir1

alt text

Kaiser 窗设计常用 kaiserord 估计阶数和参数:

matlab
fpts = input('Type in the bandedges = ');
mag = input('Type in the desired magnitude values = ');
dev = input('Type in the ripples in each band = ');

[N, Wn, beta, ftype] = kaiserord(fpts, mag, dev);
kw = kaiser(N + 1, beta);
b = fir1(N, Wn, kw);

[h, omega] = freqz(b, 1, 512);
plot(omega/pi, 20*log10(abs(h)));
grid;
xlabel('\omega/\pi');
ylabel('Gain, dB');

低通例题输入:

matlab
fpts = [0.3 0.4];
mag = [1 0];
dev = [0.003162 0.003162];

输出为:

高通例题修改设计类型:

matlab
fpts = [0.4 0.55];
mag = [0 1];
dev = [0.02 0.02];

[N, Wn, beta, ftype] = kaiserord(fpts, mag, dev);
kw = kaiser(N + 1, beta);
b = fir1(N, Wn, 'high', kw);

对应结果:

FDATool / filterDesigner 可用于图形化设计 FIR 或 IIR 滤波器。手算和脚本设计中,应优先掌握 fir1kaiserord 以及 Wn 按 Nyquist 频率归一化的约定。

除特别注明外,本站原创内容采用 CC BY-NC-SA 4.0 协议授权;引用的歌词、课程材料、图片等第三方内容版权归原权利人所有。
Built with VitePress.