我正在尝试用 Java 实现低通滤波器。我的要求很简单,我必须消除超出特定频率(单维)的信号。看起来巴特沃斯滤波器可以满足我的需要。
现在重要的是 CPU 时间应该尽可能低。过滤器必须处理近一百万个样本,而我们的用户不喜欢等待太久。是否有任何现成的巴特沃斯滤波器实现,具有最佳的滤波算法。
我有一个页面描述了一个非常简单、CPU 占用率非常低的低通滤波器,该滤波器也能够与帧速率无关。我用它来平滑用户输入,也经常用它来绘制帧速率。
http://phrogz.net/js/framerate-independent-low-pass-filter.html http://phrogz.net/js/framerate-independent-low-pass-filter.html
简而言之,在您的更新循环中:
// If you have a fixed frame rate
smoothedValue += (newValue - smoothedValue) / smoothing
// If you have a varying frame rate
smoothedValue += timeSinceLastUpdate * (newValue - smoothedValue) / smoothing
A smoothing
的价值1
不会发生平滑,而较高的值会逐渐平滑结果。
该页面有几个用 JavaScript 编写的函数,但公式与语言无关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)