4. 数字滤波器设计基础
数字滤波器是离散时间信号处理系统的核心部件,其作用是在频域上对信号进行选择性通过或抑制。理解数字滤波器,需要同时把握三个层面:结构决定它如何用有限的计算资源实现给定的传递函数;设计工具决定我们如何从指标出发得到滤波器系数;性能指标决定我们如何判断设计结果是否满足要求。本节围绕这三条主线展开,并以一个具体的低通滤波器设计任务贯穿说明。
一、IIR与FIR的结构差异
按单位脉冲响应长度是否有限,数字滤波器分为IIR(无限长脉冲响应)与FIR(有限长脉冲响应)两大类。IIR滤波器的系统函数为有理分式,其差分方程同时包含输入的历史值和输出的历史值,因此存在反馈支路。典型结构包括直接I型、直接II型(典范型)、级联型(二阶节串联)和并联型。直接II型通过共享延时单元,将延时器数量降到 max(N,M),是工程实现中最常用的形式;级联型把高阶系统分解为多个二阶节,便于控制系数量化误差和极点位置。
FIR滤波器的系统函数只有零点、没有非平凡极点,差分方程仅依赖输入的历史值,因此不存在反馈,结构上天然稳定。常见结构有直接型(横向结构)、级联型、线性相位型和频率采样型。其中线性相位FIR滤波器因系数具有对称性,可用更少的乘法器实现,且群延时恒定,在需要保持波形形状的场合(如通信基带、生物信号处理)具有明显优势。
两类滤波器的核心权衡可以概括为:IIR以非线性相位为代价换取低阶数和高计算效率;FIR以较高阶数为代价换取严格线性相位和绝对稳定。选择哪一类,取决于系统对相位失真、阶数、实时性和稳定性的具体要求。
二、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工具完成设计,最后通过幅频、相频、群延时和极点分布综合判断是否达标。掌握这条主线,就能在后续的工程应用中快速定位问题并做出合理取舍。