如何将巴特沃斯滤波器应用于不同采样率的数据?

信息处理 过滤器 采样 插值
2022-02-18 13:50:49

我正在尝试将巴特沃斯带通滤波器应用于智能手机的加速度计数据。但是,我收到的加速度计样本并非定期提供。采样频率在 1 Hz 和 128 Hz 之间变化,只需一秒钟。

我阅读了 Butterworth 的一些 Java 实现的源代码,但它们似乎都假设一个恒定的采样率。有没有办法实现允许可变采样率的巴特沃思?或者我应该插入加速度计数据以获得恒定的采样率?

如果您用数学回答,请包括外行的解释。我在信号处理的理论方面有点弱。

1个回答

我可以想出两个选择:

  • 插值数据
  • 请记住,滤波器是动态系统并求解相应的常微分方程 (ODE)

在第二种方法中,您基本上使用检索到的时间步作为 ODE 求解器中的时间步。假设您有一个二阶系统:

y¨+ω0Qy˙+yω02=xω02

对于巴特沃思,Q=12引入两个变量u=yv=u˙,你得到两个耦合的一阶 ODE:

{u˙=vv˙=xω02uω02ω0Qv

假设你不想有一个太高的截止频率

{uu+vΔtvv+(xω02uω02ω0Qv)Δt

在哪里Δt是两个步骤之间的时间差。如果你想ω0>0.25 Hz2π,你需要考虑欧拉后向法,或者如果你需要更高的精度,梯形法。

附录

您可能不想要巴特沃斯滤波器的过冲和下冲。然后,设置Q低一点。可能,您需要一个没有任何此类影响的临界阻尼系统。在这种情况下,设置Q=12. 选择 ODE 方法的一个有趣的副作用是您可以免费获得一个过滤导数(它是v组件),如果您要触发加速度的变化。