从微分方程到FIR
要理解 FIR 低通滤波器,需先明确一个关键前提:FIR 是离散时间系统,而微分方程是连续时间系统的描述工具。因此,我们会从“简单的连续低通滤波器微分方程”入手,先建立连续域的低通滤波逻辑,再通过“离散化”过渡到 FIR 低通滤波器(无反馈、有限长脉冲响应),最终给出一个可计算的 FIR 低通实例。
第一步:从连续低通滤波器的微分方程开始
最简单的连续低通滤波器是 RC 低通电路,它能滤除高频信号、保留低频信号,其核心是通过电阻(R)和电容(C)的充放电实现“平滑”作用,对应的微分方程非常简洁。
1. RC 低通电路的物理模型与微分方程推导
RC 低通电路的结构如下:输入电压为连续信号 Vi(t)V_i(t)Vi(t)(如含高频噪声的直流信号),输出电压为电容两端的电压 Vo(t)V_o(t)Vo(t)(平滑后的低频信号),电阻 R 和电容 C 串联。
根据 基尔霍夫电压定律(KVL),回路总电压满足:
电阻两端电压 VR(t)+V_R(t) +VR(t)+ 电容两端电压 $V_o(t) = 输入电压 Vi(t)V_i(t)Vi(t)
结合元件的伏安特性:
- 电阻电流 I(t)=VR(t)RI(t) = \frac{V_R(t)}{R}I(t)=RVR(t)(欧姆定律),因此 VR(t)=R⋅I(t)V_R(t) = R \cdot I(t)VR(t)=R⋅I(t);
- 电容电流 I(t)=C⋅dVo(t)dtI(t) = C \cdot \frac{dV_o(t)}{dt}I(t)=C⋅dtdVo(t)(电容电流是电压的微分,C 为电容值)。
将上述关系代入 KVL 方程:
R⋅C⋅dVo(t)dt+Vo(t)=Vi(t)R \cdot C \cdot \frac{dV_o(t)}{dt} + V_o(t) = V_i(t)R⋅C⋅dtdVo(t)+Vo(t)=Vi(t)
这就是 RC 连续低通滤波器的微分方程,其中:
- 左侧:RC⋅dVo(t)dtRC \cdot \frac{dV_o(t)}{dt}RC⋅dtdVo(t) 是“阻尼项”(体现电容充放电的快慢),Vo(t)V_o(t)Vo(t) 是输出项;
- 右侧:Vi(t)V_i(t)Vi(t) 是输入项;
- RCRCRC 称为“时间常数”(记为 τ=RC\tau = RCτ=RC),τ\tauτ 越大,滤波平滑效果越强(高频衰减越明显)。
2. 连续低通的频率特性(为离散化做铺垫)
对微分方程两边做 拉普拉斯变换(连续域频域分析工具),可得到连续低通的频率响应 Hc(s)=Vo(s)Vi(s)H_c(s) = \frac{V_o(s)}{V_i(s)}Hc(s)=Vi(s)Vo(s),代入 s=jωs = j\omegas=jω(ω\omegaω 为连续角频率)后:
Hc(jω)=11+jωτH_c(j\omega) = \frac{1}{1 + j\omega \tau}Hc(jω)=1+jωτ1
其 幅度响应(描述对不同频率的衰减能力)为:
∣Hc(jω)∣=11+(ωτ)2|H_c(j\omega)| = \frac{1}{\sqrt{1 + (\omega \tau)^2}}∣Hc(jω)∣=1+(ωτ)21
- 当 ω=0\omega = 0ω=0(直流信号):∣Hc(j0)∣=1|H_c(j0)| = 1∣Hc(j0)∣=1(无衰减,完全保留);
- 当 ω=ωc=1τ\omega = \omega_c = \frac{1}{\tau}ω=ωc=τ1(截止角频率):∣Hc(jωc)∣=12≈0.707|H_c(j\omega_c)| = \frac{1}{\sqrt{2}} \approx 0.707∣Hc(jωc)∣=21≈0.707(对应 -3dB 衰减,定义为低通的截止频率);
- 当 ω≫ωc\omega \gg \omega_cω≫ωc(高频信号):∣Hc(jω)∣≈0|H_c(j\omega)| \approx 0∣Hc(jω)∣≈0(大幅衰减,滤除高频)。
这就是连续低通的核心功能:保留 ω≤ωc\omega \leq \omega_cω≤ωc 的低频,衰减 ω>ωc\omega > \omega_cω>ωc 的高频。
第二步:从连续低通到离散 FIR 低通的过渡
FIR 是离散系统,需将连续低通的“平滑滤波”逻辑转化为“离散域的有限长加权求和”(无反馈)。关键步骤是 离散化(将连续时间 ttt 转化为离散时刻 nTnTnT,TTT 为采样周期)和 FIR 化(去除反馈,保证有限长脉冲响应)。
1. 连续低通的离散化(以欧拉法为例)
离散化的核心是用“离散差分”近似连续微分。对 RC 低通的微分方程,用 向前差分 近似 dVo(t)dt\frac{dV_o(t)}{dt}dtdVo(t):
连续微分:dVo(t)dt≈Vo((n+1)T)−Vo(nT)T\frac{dV_o(t)}{dt} \approx \frac{V_o((n+1)T) - V_o(nT)}{T}dtdVo(t)≈TVo((n+1)T)−Vo(nT)
(nnn 为离散时刻索引,Vo(nT)V_o(nT)Vo(nT) 表示第 nnn 个采样点的输出,记为 y(n)y(n)y(n);输入 Vi(nT)V_i(nT)Vi(nT) 记为 x(n)x(n)x(n))
将差分代入连续微分方程,整理得 离散递推关系:
y(n+1)=(1−Tτ)y(n)+Tτx(n)y(n+1) = \left(1 - \frac{T}{\tau}\right) y(n) + \frac{T}{\tau} x(n)y(n+1)=(1−τT)y(n)+τTx(n)
但注意:这个离散系统是 IIR(无限长脉冲响应),因为输出 y(n+1)y(n+1)y(n+1) 依赖前一时刻的输出 y(n)y(n)y(n)(存在反馈),不符合 FIR“无反馈、仅依赖输入有限历史值”的核心特征。
2. FIR 低通的核心:去除反馈,保留有限长输入依赖
要得到 FIR,需改造上述离散系统:输出仅依赖输入的有限个历史值(无反馈)。例如,若输出仅依赖当前输入 x(n)x(n)x(n) 和前 2 个输入 x(n−1)、x(n−2)x(n-1)、x(n-2)x(n−1)、x(n−2)(3 个输入,即“3 抽头 FIR”),则输出公式为:
y(n)=h(0)x(n)+h(1)x(n−1)+h(2)x(n−2)y(n) = h(0)x(n) + h(1)x(n-1) + h(2)x(n-2)y(n)=h(0)x(n)+h(1)x(n−1)+h(2)x(n−2)
这就是 FIR 的核心——卷积和(有限项),其中 h(0)、h(1)、h(2)h(0)、h(1)、h(2)h(0)、h(1)、h(2) 是 FIR 的“滤波系数”(即单位脉冲响应 h(n)h(n)h(n)),需满足:
- 系数有限长(仅 3 个非零值,符合 FIR 定义);
- 逼近连续低通的频率特性(保留低频、衰减高频)。
第三步:3 抽头 FIR 低通滤波器实例(完整设计与验证)
基于上述逻辑,我们设计一个 3 抽头 FIR 低通滤波器,目标是逼近 RC 低通的滤波效果,具体步骤如下:
1. 确定设计参数
- 采样频率 fs=1T=1000 Hzf_s = \frac{1}{T} = 1000\ \text{Hz}fs=T1=1000 Hz(即采样周期 T=1 msT = 1\ \text{ms}T=1 ms);
- 目标截止频率 fc=200 Hzf_c = 200\ \text{Hz}fc=200 Hz(与 RC 低通的截止频率一致,需保留 ≤200Hz 的信号);
- 抽头数 N=3N = 3N=3(FIR 系数 h(n)h(n)h(n) 仅在 n=0、1、2n=0、1、2n=0、1、2 非零)。
2. 计算 FIR 滤波系数 h(n)h(n)h(n)(窗函数法)
FIR 系数的设计需逼近“理想离散低通”的脉冲响应,常用 窗函数法(简单直观),步骤如下:
(1)理想离散低通的脉冲响应 hd(n)h_d(n)hd(n)
理想离散低通的频率响应为:
Hd(ejω)=1H_d(e^{j\omega}) = 1Hd(ejω)=1(当 ∣ω∣≤ωc|\omega| \leq \omega_c∣ω∣≤ωc),Hd(ejω)=0H_d(e^{j\omega}) = 0Hd(ejω)=0(当 ∣ω∣>ωc|\omega| > \omega_c∣ω∣>ωc)
其中 ωc=2πfcfs=2π×2001000=0.4π rad\omega_c = 2\pi \frac{f_c}{f_s} = 2\pi \times \frac{200}{1000} = 0.4\pi\ \text{rad}ωc=2πfsfc=2π×1000200=0.4π rad(数字截止角频率)。
通过 逆离散时间傅里叶变换(IDTFT),可得理想脉冲响应:
hd(n)=ωcπ⋅sinc(ωcnπ)h_d(n) = \frac{\omega_c}{\pi} \cdot \text{sinc}\left( \frac{\omega_c n}{\pi} \right)hd(n)=πωc⋅sinc(πωcn)
(sinc(x)=sin(x)x\text{sinc}(x) = \frac{\sin(x)}{x}sinc(x)=xsin(x) 为抽样函数,是无限长序列)。
代入 ωc=0.4π\omega_c = 0.4\piωc=0.4π,计算关键时刻的 hd(n)h_d(n)hd(n):
- n=0n=0n=0:hd(0)=0.4ππ⋅sinc(0)=0.4×1=0.4h_d(0) = \frac{0.4\pi}{\pi} \cdot \text{sinc}(0) = 0.4 \times 1 = 0.4hd(0)=π0.4π⋅sinc(0)=0.4×1=0.4;
- n=±1n=\pm1n=±1:hd(1)=hd(−1)=0.4⋅sinc(0.4)=0.4×sin(0.4)0.4≈0.303h_d(1) = h_d(-1) = 0.4 \cdot \text{sinc}(0.4) = 0.4 \times \frac{\sin(0.4)}{0.4} \approx 0.303hd(1)=hd(−1)=0.4⋅sinc(0.4)=0.4×0.4sin(0.4)≈0.303;
- n=±2n=\pm2n=±2 及以外:hd(n)h_d(n)hd(n) 衰减至接近 0(可忽略)。
(2)用窗函数截断得到 FIR 系数 h(n)h(n)h(n)
由于 hd(n)h_d(n)hd(n) 是无限长序列,需用“矩形窗”(最简单的窗函数,w(n)=1w(n)=1w(n)=1 当 n=0、1、2n=0、1、2n=0、1、2,否则为 0)截断,得到有限长的 FIR 系数:
为保证 线性相位(无相位失真),需让系数对称(h(0)=h(2)h(0)=h(2)h(0)=h(2)),因此:
- h(0)=hd(−1)≈0.303h(0) = h_d(-1) \approx 0.303h(0)=hd(−1)≈0.303(对应输入 x(n)x(n)x(n) 的权重);
- h(1)=hd(0)=0.4h(1) = h_d(0) = 0.4h(1)=hd(0)=0.4(对应输入 x(n−1)x(n-1)x(n−1) 的权重);
- h(2)=hd(1)≈0.303h(2) = h_d(1) \approx 0.303h(2)=hd(1)≈0.303(对应输入 x(n−2)x(n-2)x(n−2) 的权重)。
最终 3 抽头 FIR 低通的系数为:
h(0)=0.303, h(1)=0.4, h(2)=0.303\boxed{h(0)=0.303,\ h(1)=0.4,\ h(2)=0.303}h(0)=0.303, h(1)=0.4, h(2)=0.303
3. 验证 FIR 低通的滤波效果
我们输入一个 混合信号(含通带信号和阻带信号),通过 FIR 的卷积和计算输出,验证滤波效果。
(1)输入信号 x(n)x(n)x(n)
输入为“1Hz 正弦波(通带,≤200Hz)+ 500Hz 正弦波(阻带,>200Hz)”,表达式为:
x(n)=sin(2π×1×nfs)+sin(2π×500×nfs)x(n) = \sin\left( 2\pi \times 1 \times \frac{n}{f_s} \right) + \sin\left( 2\pi \times 500 \times \frac{n}{f_s} \right)x(n)=sin(2π×1×fsn)+sin(2π×500×fsn)
代入 fs=1000 Hzf_s=1000\ \text{Hz}fs=1000 Hz,简化为:
x(n)=sin(2πn1000)+sin(πn)x(n) = \sin\left( \frac{2\pi n}{1000} \right) + \sin(\pi n)x(n)=sin(10002πn)+sin(πn)
(2)FIR 输出计算(卷积和)
根据 FIR 的输入输出关系(卷积和):
y(n)=h(0)x(n)+h(1)x(n−1)+h(2)x(n−2)y(n) = h(0)x(n) + h(1)x(n-1) + h(2)x(n-2)y(n)=h(0)x(n)+h(1)x(n−1)+h(2)x(n−2)
代入具体数值计算(以 n=2、3、4n=2、3、4n=2、3、4 为例):
-
n=2n=2n=2:y(2)=0.303x(2)+0.4x(1)+0.303x(0)y(2) = 0.303x(2) + 0.4x(1) + 0.303x(0)y(2)=0.303x(2)+0.4x(1)+0.303x(0)
计算得:x(0)=0+0=0x(0)=0+0=0x(0)=0+0=0,x(1)=sin(0.002π)+sin(π)≈0.00628+0=0.00628x(1)=\sin(0.002\pi)+\sin(\pi)≈0.00628+0=0.00628x(1)=sin(0.002π)+sin(π)≈0.00628+0=0.00628,x(2)=sin(0.004π)+sin(2π)≈0.01257+0=0.01257x(2)=\sin(0.004\pi)+\sin(2\pi)≈0.01257+0=0.01257x(2)=sin(0.004π)+sin(2π)≈0.01257+0=0.01257
因此 y(2)≈0.303×0.01257+0.4×0.00628+0.303×0≈0.00381+0.00251≈0.00632y(2)≈0.303×0.01257 + 0.4×0.00628 + 0.303×0≈0.00381 + 0.00251≈0.00632y(2)≈0.303×0.01257+0.4×0.00628+0.303×0≈0.00381+0.00251≈0.00632(接近 1Hz 信号的幅值)。 -
n=100n=100n=100(稳定阶段):500 Hz500\ \text{Hz}500 Hz 信号 sin(πn)\sin(\pi n)sin(πn) 每采样点交替为 1、-1、1、-1,代入卷积和:
y(100)=0.303×1+0.4×(−1)+0.303×1=(0.303+0.303)−0.4=0.606−0.4=0.206y(100) = 0.303×1 + 0.4×(-1) + 0.303×1 = (0.303+0.303) - 0.4 = 0.606 - 0.4 = 0.206y(100)=0.303×1+0.4×(−1)+0.303×1=(0.303+0.303)−0.4=0.606−0.4=0.206(500Hz 信号衰减至约 0.2,远小于通带信号)。
(3)滤波效果结论
- 通带信号(1Hz):输出幅值接近输入幅值(衰减很小);
- 阻带信号(500Hz):输出幅值大幅衰减(从 1 降至约 0.2,衰减约 13.7dB);
- 线性相位:由于系数对称(h(0)=h(2)h(0)=h(2)h(0)=h(2)),输出信号无相位失真,仅延迟 N−12=1\frac{N-1}{2}=12N−1=1 个采样点(符合线性相位特性)。
总结:从微分方程到 FIR 低通的逻辑链
- 连续基础:RC 低通的微分方程(RCdVodt+Vo=ViRC\frac{dV_o}{dt} + V_o = V_iRCdtdVo+Vo=Vi)描述了连续低通的核心逻辑(平滑、滤高频);
- 离散过渡:通过差分近似微分将连续系统转化为离散系统,再去除反馈,得到 FIR 的“有限长输入依赖”结构;
- FIR 设计:用窗函数法截断理想离散低通的无限长脉冲响应,得到有限长系数 h(n)h(n)h(n);
- 功能验证:通过卷积和计算输出,验证通带信号保留、阻带信号衰减的低通效果。
这个实例展示了 FIR 低通的本质:用无反馈的有限长加权求和,逼近连续低通的滤波特性,且具有绝对稳定、线性相位的优势。