我正在尝试在Java中实现低通滤波器。我的要求非常简单,我必须消除超出特定频率(单一尺寸)的信号。看起来Butterworth过滤器适合我的需求。

现在重要的是CPU时间应尽可能短。过滤器将要处理将近一百万个样本,我们的用户不希望等待太久。是否有现成的Butterworth过滤器实现方案,它具有最佳的过滤算法。

最佳答案

我有一个页面描述了一个非常简单的,非常低CPU的低通滤波器,它也可以独立于帧速率。我使用它来平滑用户输入并经常绘制帧速率图。

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
smoothing1值不会引起平滑,而较高的值会逐渐使结果平滑。

该页面具有使用JavaScript编写的几个函数,但是该公式与语言无关。

09-05 11:49