4. 数字滤波器设计基础

数字滤波器是离散时间信号处理系统的核心部件,其作用是在频域上对信号进行选择性通过或抑制。理解数字滤波器,需要同时把握三个层面:结构决定它如何用有限的计算资源实现给定的传递函数;设计工具决定我们如何从指标出发得到滤波器系数;性能指标决定我们如何判断设计结果是否满足要求。本节围绕这三条主线展开,并以一个具体的低通滤波器设计任务贯穿说明。

一、IIR与FIR的结构差异

按单位脉冲响应长度是否有限,数字滤波器分为IIR(无限长脉冲响应)与FIR(有限长脉冲响应)两大类。IIR滤波器的系统函数为有理分式,其差分方程同时包含输入的历史值和输出的历史值,因此存在反馈支路。典型结构包括直接I型、直接II型(典范型)、级联型(二阶节串联)和并联型。直接II型通过共享延时单元,将延时器数量降到 max(N,M),是工程实现中最常用的形式;级联型把高阶系统分解为多个二阶节,便于控制系数量化误差和极点位置。

FIR滤波器的系统函数只有零点、没有非平凡极点,差分方程仅依赖输入的历史值,因此不存在反馈,结构上天然稳定。常见结构有直接型(横向结构)、级联型、线性相位型和频率采样型。其中线性相位FIR滤波器因系数具有对称性,可用更少的乘法器实现,且群延时恒定,在需要保持波形形状的场合(如通信基带、生物信号处理)具有明显优势。

两类滤波器的核心权衡可以概括为:IIR以非线性相位为代价换取低阶数和高计算效率;FIR以较高阶数为代价换取严格线性相位和绝对稳定。选择哪一类,取决于系统对相位失真、阶数、实时性和稳定性的具体要求。

IIR 直接II型 与 FIR 直接型 结构对比 IIR 直接II型(含反馈) x[n] + 1/b0 y[n] -a1,-a2 z⁻¹ z⁻¹ 反馈支路 → 极点 → 可能不稳定 延时器数量 = max(N,M) FIR 直接型(无反馈) x[n] z⁻¹ z⁻¹ y[n] h[1] h[2] + + 无反馈 → 仅零点 → 绝对稳定 阶数 N 较高,可实现严格线性相位

二、MATLAB滤波器设计工具

MATLAB提供了从交互式设计到代码生成的完整工具链。最直观的是 filterDesigner(旧版为 fdatool),它以图形界面方式让用户选择响应类型、设计方法、滤波器阶数和频率指标,并实时显示幅频响应、相频响应、零极点图和群延时。设计完成后可直接导出系数到工作区,或生成MATLAB函数、Simulink模块乃至C代码。

在脚本化设计中,designfilt 是较新的推荐入口,它用参数名—值对描述设计规格,返回一个 digitalFilter 对象,可直接用于 filter 函数。例如设计一个采样率1000 Hz、通带截止150 Hz、阻带截止200 Hz、通带波纹1 dB、阻带衰减60 dB的低通滤波器:

Fs = 1000;
d = designfilt('lowpassiir', ...
    'PassbandFrequency', 150, ...
    'StopbandFrequency', 200, ...
    'PassbandRipple', 1, ...
    'StopbandAttenuation', 60, ...
    'SampleRate', Fs, ...
    'DesignMethod', 'butter');
fvtool(d);          % 查看幅频、相频、群延时
y = filter(d, x);   % 对信号 x 滤波

若选择FIR等波纹设计,可改用 designfilt('lowpassfir', ...) 并指定 'DesignMethod','equiripple'。对于经典IIR原型,butter、cheby1、cheby2、ellip 分别对应巴特沃斯、切比雪夫I型、切比雪夫II型和椭圆滤波器,它们返回 b、a 系数,可直接配合 freqz 分析频率响应。FIR方面,fir1 适合窗函数法,firpm 适合等波纹最优设计,kaiserord 可根据指标估算阶数和窗参数。

设计时建议先用 fvtool 或 freqz 检查幅频响应是否满足指标,再检查群延时是否可接受。若IIR的相位非线性影响明显,可考虑用 filtfilt 做零相位滤波,但它不适合实时处理。

三、性能指标与判读

滤波器性能指标主要围绕频率选择性和相位特性展开。频率选择性由通带截止频率 fp、阻带截止频率 fs、通带最大衰减 Ap(或波纹)和阻带最小衰减 As 描述。过渡带宽度为 fs - fp,它越窄,所需阶数越高。对于IIR,阶数估算可借助 buttord、cheb1ord、ellipord 等函数;对于FIR,等波纹设计的阶数近似与 As 和归一化过渡带宽度成反比。

相位方面,FIR线性相位滤波器的群延时为 (N-1)/2 个采样点,是常数;IIR的群延时随频率变化,会在通带边缘产生明显失真。实际判读时,应同时观察幅频响应的通带波纹、阻带衰减和过渡带陡度,以及相频响应或群延时曲线是否平坦。此外还需关注系数量化后的极点位置:IIR极点必须位于单位圆内,否则系统不稳定。

指标含义典型判读
通带截止频率 fp通带边缘频率实际-3 dB点或指定波纹边缘
阻带截止频率 fs阻带起始频率衰减达到 As 的频率点
通带波纹 Ap通带内最大起伏越小越好,但阶数增加
阻带衰减 As阻带最小抑制量60 dB 常用于一般工程
群延时各频率分量延迟FIR恒定,IIR随频率变化
设计完成后不要只看幅频响应。若用于实时系统,还需检查滤波器阶数带来的计算延迟和内存占用;若用于离线分析,可优先考虑零相位滤波以消除相位失真。

综合来看,数字滤波器设计是一个“指标—结构—工具—验证”的闭环过程。先明确通带、阻带、波纹和衰减要求,再根据相位和稳定性需求选择IIR或FIR,接着用MATLAB工具完成设计,最后通过幅频、相频、群延时和极点分布综合判断是否达标。掌握这条主线,就能在后续的工程应用中快速定位问题并做出合理取舍。