我正在尝试将巴特沃斯带通滤波器应用于智能手机的加速度计数据。但是,我收到的加速度计样本并非定期提供。采样频率在 1 Hz 和 128 Hz 之间变化,只需一秒钟。
我阅读了 Butterworth 的一些 Java 实现的源代码,但它们似乎都假设一个恒定的采样率。有没有办法实现允许可变采样率的巴特沃思?或者我应该插入加速度计数据以获得恒定的采样率?
如果您用数学回答,请包括外行的解释。我在信号处理的理论方面有点弱。
我正在尝试将巴特沃斯带通滤波器应用于智能手机的加速度计数据。但是,我收到的加速度计样本并非定期提供。采样频率在 1 Hz 和 128 Hz 之间变化,只需一秒钟。
我阅读了 Butterworth 的一些 Java 实现的源代码,但它们似乎都假设一个恒定的采样率。有没有办法实现允许可变采样率的巴特沃思?或者我应该插入加速度计数据以获得恒定的采样率?
如果您用数学回答,请包括外行的解释。我在信号处理的理论方面有点弱。
我可以想出两个选择:
在第二种方法中,您基本上使用检索到的时间步作为 ODE 求解器中的时间步。假设您有一个二阶系统:
对于巴特沃思,引入两个变量和,你得到两个耦合的一阶 ODE:
假设你不想有一个太高的截止频率
在哪里是两个步骤之间的时间差。如果你想,你需要考虑欧拉后向法,或者如果你需要更高的精度,梯形法。
您可能不想要巴特沃斯滤波器的过冲和下冲。然后,设置低一点。可能,您需要一个没有任何此类影响的临界阻尼系统。在这种情况下,设置. 选择 ODE 方法的一个有趣的副作用是您可以免费获得一个过滤导数(它是组件),如果您要触发加速度的变化。