ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

一阶低通滤波截止频率怎么选?从公式到场景化调参全攻略

一阶低通滤波截止频率怎么选?从公式到场景化调参全攻略 1. 从一次“滤波后数据还是抖”的调试说起很多刚接触信号处理的朋友第一次用一阶低通滤波时都会遇到一个灵魂拷问代码明明照着教程抄了RC参数也算了为什么滤波后的数据要么还是抖得厉害要么响应慢得像蜗牛我也经历过这个阶段。早年在做传感器数据采集时用一阶低通滤波处理压力传感器的输出当时为了把噪声压下去把截止频率设得特别低结果噪声确实没了但系统的响应时间也惨不忍睹——一个阶跃信号过来要等两三秒才能跟上去。后来做电机电流采样时又因为截止频率设得偏高高频噪声直接穿过滤波器导致控制量毛刺严重。来回折腾了挺长时间才慢慢摸清楚这个“截止频率到底要怎么选”的问题。先说结论一阶低通滤波的截止频率永远是在“平滑度”和“响应速度”之间做权衡。这个权衡没有标准答案只有适合场景的答案。但好消息是我们可以通过方法论的梳理让这个选择过程不再靠猜。这篇文章我准备系统拆解一下一阶低通滤波截止频率的选取逻辑包括它的公式推导、物理意义、不同场景下的取值策略以及实际操作中会遇到的各种坑。无论你是做嵌入式、做控制、做音频处理还是做数据分析这套方法论基本都能复用。2. 截止频率的本质它到底在“切”什么2.1 -3dB点到底意味着什么聊截止频率之前先把基础概念对齐一下。一阶低通滤波器的传递函数长这样H(s) 1 / (1 s/ωc)其中 ωc 2πfcfc 就是截止频率。当 s 的模等于 ωc 时增益的模是多少呢算一下|H(jωc)| 1 / sqrt(1 (ωc/ωc)^2) 1 / sqrt(2) ≈ 0.707换算成dB20 * log10(0.707) ≈ -3.01dB所以截止频率的物理含义就是在频率 fc 处信号幅度被衰减到原来的 70.7%功率衰减到一半。这也是为什么截频也叫“-3dB点”。但这里存在一个常见的认知误区——很多人以为截止频率以上就是“全部滤掉”以下就是“完全保留”。实际上不是这样。一阶滤波器只有一个极点它的衰减速率是固定的每倍频程衰减 20dB也就是频率每翻一倍增益再下降 20dB。这意味着在 0.1fc 处衰减约为 0.04dB信号基本无损通过在 0.3fc 处衰减约为 0.5dB还算能接受在 fc 处衰减 3dB在 3fc 处衰减约 10dB在 10fc 处衰减约 20dB所以一阶滤波器并不是一个很“陡峭”的滤波器。如果你的需求是“把50Hz以上的全部干掉”那一阶滤波是做不到这个效果的。它更适合在噪声频率和目标信号频率差距很大的场景下使用。2.2 相位滞后比幅度衰减更隐蔽的坑在选截止频率时大家通常只盯着幅度响应但实际系统中相位滞后往往才是那个让你调试抓狂的隐形杀手。一阶低通滤波的相位响应是φ -arctan(f/fc)在截止频率处相位滞后恰好是45度。在低于截止频率10倍的位置相位滞后约5.7度低于3倍约18度。这个相位滞后意味着滤波器的输出信号会相对于输入信号产生时间延迟。延迟时间可以估算t_delay ≈ φ / (360° * f)举例来说如果你的信号频率是 10Hz截止频率选 10Hz那相位滞后就是45度对应的时间延迟大约是t_delay ≈ 45 / (360 * 10) 0.0125s 12.5ms在闭环控制系统中12.5ms 的延迟可能就会导致相位裕度不足引起振荡。所以控制领域选截止频率时不仅要看幅度衰减效果还要核算一下这个截止频率会不会把系统的相位裕度吃掉太多。这一点在后面的“场景化选参”里会反复用到。3. 截止频率选取先搞清楚你面对的是什么信号3.1 有用信号的最高频率是多少这是最基础的约束条件。截止频率必须高于有用信号的最高频率分量否则有用的信号本身也会被衰减和延迟。举个例子如果你在采集一个变化周期约为 0.1s 的物理量也就是频率约 10Hz那截止频率至少要设置在 50Hz 以上才能保证 10Hz 的信号基本无损通过。这里存在一个经验法则截止频率至少是有用信号最高频率的 3~5 倍。5倍时衰减约0.5dB延迟约11度这个水平在大多数场景下是可接受的。注意这里说的是“有用信号的最高频率”不是采样率。有的朋友直接把截止频率设为采样率的几分之一这没问题但不够严谨。核心还是要回到被测物理量的特性上去。3.2 噪声频率在什么范围理解了有用信号后再来分析噪声。不同的噪声源频率特性差异很大噪声来源典型频段应对策略参考工频及谐波50Hz、100Hz、150Hz陷波器更合适一阶滤波压制能力有限电子热噪声宽带白噪声从DC到MHz一阶低通可以衰减但效果依赖于截止频率开关电源纹波几十kHz到几MHz一阶低通效果有限考虑LC滤波或更高阶滤波机械振动噪声数百Hz到数kHz一阶低通有一定效果运动伪迹0.5Hz~5Hz一阶低通要小心容易和有用信号重叠如果噪声频率和有用信号频率离得很远比如有用信号是10Hz噪声是1kHz那一阶低通滤波很轻松就能把1kHz衰减40dB以上效果很好。但如果噪声频率只是稍高于有用信号比如有用信号10Hz噪声50Hz一阶低通就很难在“保住10Hz”的同时“干掉50Hz”因为两者差距只有5倍而一阶滤波的滚降只有20dB/十倍频程。这种场景下你就需要评估是提高截止频率保响应牺牲部分噪声抑制还是降低截止频率保平滑接受响应变慢或者干脆使用二阶甚至更高阶滤波这些都是需要结合应用场景取舍的。3.3 系统实时性的要求有多高实时性需求往往是最硬性的约束。如果系统要求从信号变化到输出响应在100ms以内那滤波器的延迟就必须控制在远小于这个值的水平。这个约束可以通过“延迟时间”反推截止频率的上限。经验上滤波器延迟时间占系统响应时间预算的 10%~20% 比较合理。如果系统允许总延迟100ms那滤波器延迟要控制在 10ms~20ms。根据前面提的相位滞后和延迟的关系大致的截止频率可以估算fc ≥ 信号频率 * (45° / (360° * f * t_delay_max))稍微算一下就能发现延迟预算越紧截止频率只能设得越高。这也是为什么在很多实时控制系统中控制环路的信号不怎么滤波或只用很弱的滤波——因为控制周期极短根本等不起滤波器的延迟。4. 具体场景下的截止频率参考值与计算示例4.1 传感器数据采集与预处理传感器输出如温度、压力、液位中的有用信号通常变化缓慢噪声往往来自电磁干扰或电源纹波。以水温采集为例用NTC热敏电阻测水温水的温度变化速度一般不会超过 0.1℃/s对应的信号频率远低于 1Hz。此时截止频率选择 1~5Hz 都是合理的。如果环境电磁干扰比较多还可以适量降低。另一种常见情况是IMU惯性测量单元姿态角解算。姿态角变化的频率取决于运动场景静止或慢速运动的设备姿态频率可能低于 1Hz无人机、机器人等运动速度较快姿态频率可能达到 10~20Hz。此时滤波器截止频率一般取 5~30Hz具体取决于运动动态和噪声量级。4.2 音频信号处理音频领域的低通滤波和传感器滤波关注点不同。音频中关注的是音色而不是绝对的时间延迟。人耳能听到的最高频率是20kHz但低通滤波通常用在“去掉高频噪声”“给低音炮分频”这类场景。如果是低音炮的分频截止频率通常设置在 80~120Hz因为低音炮主要负责低频段更高的频率交给全频音箱。这种场景下一阶低通滤波的 20dB/十倍频程衰减就显得不太够用了。所以音频领域更多使用 Linkwitz-Riley 滤波器每倍频程 24dB 衰减或 Butterworth 滤波器等高阶设计。如果一定要用一阶效果会比较“糊”频率交叉区域的相位干涉会比较明显。4.3 电机控制与伺服系统电机控制中的电流采样是有名的高噪声场景。PWM开关频率通常在 8kHz~20kHz会产生强烈的开关噪声而电流信号本身的频率通常低于几百赫兹。这里的问题是截止频率太高开关频率穿进去控制环路崩溃截止频率太低电流环的响应变慢驱动器动态特性变差。实际操作中电流环滤波截止频率通常在几百赫兹到 2kHz 之间具体取决于PWM开关频率越高的系统滤波器截止频率可以设得越低因为噪声频率和有用信号频率的差距更大了电流环控制周期越短比如10kHz采样滤波器延迟越小越好截止频率就需要适当提高速度环和位置环的信号比电流环平滑截止频率一般比电流环低通常在 20~100Hz 之间。这里还有一个经验法则速度环的截止频率应该比电流环低 3~5 倍位置环和速度环之间的关系类似。4.4 电池管理系统BMS与电源监测BMS 需要采集电芯电压和温度来估算SOC荷电状态。电池电压本身变化缓慢但负载变化会在电压上产生瞬态波动而且BMS的ADC采样还存在量化噪声。此时截止频率的选择要看BMS的功能模块BMS功能采样信号特性截止频率参考SOC估算电压缓变需求平滑0.1~0.5Hz过压/欠压保护需要快速响应不滤波或50Hz以上温度采集变化极慢0.1Hz左右电流采集需要兼顾动态1~10Hz注意同一个BMS系统中不同功能模块对滤波的需求可能是互相冲突的。实际工程中我通常的做法是同一路电压信号引两路一路用较高截止频率做保护判断另一路用较低截止频率做SOC估算互不干扰。4.5 数据仪表与上位机可视化如果你只是在上位机或仪表盘上显示数据比如温度显示、转速表、液位计等对实时性的要求没有那么苛刻那截止频率可以适当降低一些保证显示稳定。人眼对视觉平滑的感知有个特点几十毫秒以内的更新延迟几乎感知不到。但如果是大屏监控这种场景数据跳动会非常明显我一般会把截止频率设置在 0.5~2Hz让仪表数值稳定下来。有一个值得注意的地方如果显示的是0.1Hz以下的低频信号比如温度从25.0度变化到25.1度需要好几分钟那截止频率设为 0.1Hz对应的延迟大约是 1.6 秒左右。这在很多显示场景是可以接受的但如果是触控交互的设备用户会明显觉得数据“迟钝”。所以即使是显示场景也要搞清楚用户对这个数值的实时性预期。5. 从截止频率反推 R 和 C算到你直接能用5.1 RC低通滤波的参数计算经典的一阶低通RC电路截止频率公式fc 1 / (2π * R * C)所以当你确定了截止频率 fc 后R 和 C 的组合满足R * C 1 / (2π * fc)这里存在一个自由度同一个截止频率可以对应无数种R和C的组合。那到底怎么选核心约束有三个阻抗匹配RC滤波器的输入是信号源的输出。R 的取值应该远大于信号源的内阻但又不能大得离谱否则后级电路的输入阻抗会分压。噪声与漏电流R 越大电阻热噪声越大同时后续放大器或ADC的输入偏置电流会在R上产生额外的压降误差。电容的物理尺寸和材质C 越大电容体积越大ESR等效串联电阻也会变化。电解电容的ESR较高在高频滤波场景不太合适。工程上通常的取值习惯是R取 1kΩ~100kΩC取 1nF~10μF再根据截止频率倒算另一个参数。举两个具体例子如果截止频率要求 100HzR * C 1 / (2π * 100) ≈ 1.59ms可以选 R10kΩC159nF。实际没有159nF的标准电容那就选 R15kΩC100nF此时fc 1 / (2π * 15k * 100n) ≈ 106Hz偏差6%一般可以接受。如果截止频率要求 5HzR * C 1 / (2π * 5) ≈ 31.8ms可以选 R47kΩC680nF得fc 1 / (2π * 47k * 680n) ≈ 4.97Hz这个组合比较均衡R不算太大C也不算太大匹配常用器件。5.2 数字滤波器的时间常数对应关系如果你是在单片机或上位机里做数字一阶低通滤波通常会用一个递推公式y[n] y[n-1] α * (x[n] - y[n-1])这里的 α 是滤波系数取值范围 0~1。α 越小滤波越平缓α 越大响应越快。它的时间常数 τ 与 α 的关系是τ ≈ (1 - α) / α * Ts其中 Ts 是采样周期。截止频率和时间常数的关系是fc 1 / (2π * τ)所以如果采样率 fs 1kHz即 Ts 1ms你希望截止频率是 10Hz则先算时间常数τ 1 / (2π * 10) ≈ 15.9ms代入关系式(1 - α) / α * 1ms ≈ 15.9ms → (1 - α) / α ≈ 15.9 → α ≈ 0.059如果希望截止频率是 1Hzτ 1 / (2π*1) ≈ 159ms (1 - α) / α * 1ms ≈ 159ms α ≈ 0.00625这里的 α 非常小滤波会非常平滑但也会非常迟钝。0.00625 意味着新数据对输出只影响千分之六剩下全靠历史数据积累。这里有一个初学者容易踩的坑直接把 α 当作“系数越大滤波越强”但实际上 α 是反向指标。α 越大反而滤波越弱。更好的理解方式是把它看成“新数据权重”α0.01 表示新数据权重只有1%所以滤波特别重α0.5 表示新旧数据各占一半滤波中等。6. 实操中的参数调整方法不要迷信公式要在系统中验证无论是 RC 电路还是数字滤波理论计算只能提供一个“起始点”。实际系统里采样噪声的幅值、信号源的阻抗、后级负载的输入阻抗都会影响最终效果。所以在实操中我会推荐一个系统性的参数整定流程先按信号频率和噪声频率的差距估算一个起始截止频率用上面的公式算出 R、C 或 α在系统里采集一段原始信号分析频谱确认噪声的实际频段和强度用起始参数滤波观察输出波形如果噪声仍明显整体降低截止频率约2~3倍一档观察响应速度是否还能接受如果响应太慢提高截止频率约2倍一档容忍一部分噪声最终找到一个“噪声不可见、响应可接受”的临界点这个“临界点”不一定是理论最优值但它是在你项目约束下的工程最优解。更严谨的工程流程会建立系统模型通过仿真来预估不同截止频率下的系统响应。但在实际项目中简单的在线调参往往更快更有效。7. 一阶低通滤波的常见调试问题速查表下面整理我在实际项目中遇到过的典型问题几乎每个都是踩坑踩出来的现象可能原因排查与解决思路滤波后数据依然剧烈跳动截止频率太高噪声压制不足将截止频率降低3~5倍试试滤波后数据看起来平滑但无法跟随实际变化截止频率太低将截止频率提高3~5倍滤波后数据更新滞后感严重视觉上“反应迟钝”相位滞后过大提高截止频率或改用更高阶但相位特性更好的滤波器数据出现明显的偏置/漂移数字滤波中 α 太小初始收敛慢增加积分时间或初始化时将 y[0] 设为 x[0]刚上电时的数据长时间不稳定滤波器初始状态为0需要时间收敛将 y[n-1] 初始化第一个采样值而非0滤波后的峰值变小了截止频率降低了信号幅值如果峰值是有效信息需要提高截止频率有工频50Hz干扰但滤波效果不理想一阶滤波对50Hz的衰减不足叠加陷波器或如果允许降低截止频率到10Hz以下系统闭环控制中引入振荡滤波造成的相位滞后过大降低滤波强度/提高截止频率或从控制参数上补偿滤波前后数据标准差减小但均值偏移传感器本身存在非线性或滞后需要校准而不是靠提高滤波强度解决其中“上电初始收敛慢”这个坑我特别想多说一句。很多数字低通滤波的实现y[n-1] 初始值为0。如果上电时真实信号是 3.3V滤波器要花很长时间从0慢慢爬到3.3V在 α 很小的场景下可能要几十秒。解决办法很简单在初始化时直接把 y[n-1] 设为第一个采样值 x[0]收敛时间会大幅缩短。8. 进阶讨论什么时候不该用一阶低通滤波一阶低通滤波不是万能的。以下场景我建议你考虑其他方案场景特征推荐替代方案原因需要极陡峭的滚降特性二阶/高阶巴特沃斯滤波一阶只有20dB/dec衰减不够快信号频率和噪声频率非常接近自适应滤波或卡尔曼滤波单纯频域滤波无法分离交叠频带系统存在强非线性或动态模型已知卡尔曼滤波一阶滤波不感知系统模型性能受限需要最小相位滞后Bessel滤波贝塞尔滤波Bessel在通带内相位线性度更好延迟失真低存在强烈的周期性窄带干扰陷波滤波器陷波器可以选择性滤除窄带干扰不损害其他频段卡尔曼滤波在传感器融合和数据平滑中的效果尤其突出如果面对的噪声是非高斯、非平稳的或者系统有明确的运动学/动力学模型用一阶低通滤波就是降维打击了。另外再多说一句数字一阶低通滤波的“极点”和RC电路的“极点”在离散化之后是有偏差的。如果使用双线性变换Tustin法离散化极点位置会漂移需要做频率预畸变校正。如果用前向欧拉差分稳定性条件也和连续系统不同。这些细节在要求比较高的控制系统中值得重视。根据我个人的习惯只要是安全关键系统或者控制精度要求高的系统我都会先用 Python/NumPy 做一次仿真把不同截止频率的滤波效果提前看一遍再结合实际采集调试能省掉大量的在线折腾时间。最后分享一个实用技巧当你用数字滤波觉得“怎么调都不太对”的时候把原始信号和滤波后的信号放到同一个图上对比着看。很多时候问题的答案就藏在两条曲线的差距里——到底是延迟太大还是衰减不够还是初始收敛问题一眼就能分辨出来。这个方法我一直用了很多年比对着参数苦思冥想靠谱得多。
返回列表