2

我有一个内存很小的数据记录器,我想在固件中实现对过滤器的支持。

我可以轻松实现哪些类型的过滤器而不需要缓冲区或庞大的函数?

想到的是指数移动平均线,例如:

sample = (alpha * new_sample) + (1.0 - alpha) * sample

是否有任何其他著名的 DSP 滤波器可以在几行内完成?

4

1 回答 1

2

没有一些缓冲就不可能实现频率选择性滤波。即使您给出的示例也需要一个样本的缓冲区。首先,忘记大多数实时数据的 FFT 过滤。对于大多数过滤应用程序,当然还有您关心内存的应用程序,您将需要使用时域过滤器。

时域滤波器通常有两个优点,IIR 和 FIR。过滤器也根据它们的“顺序”来区分。您上面给出的示例是一阶 IIR 滤波器。相关事实如下:

  • 从广义上讲,IIR 滤波器对于给定响应需要比 FIR 更低的阶数。
  • 一个过滤器可以用与过滤器阶数相等的存储单元数来实现。这并不总是实现过滤器的最佳方式,但可以使用称为Direct Form II的东西来完成。

对于广泛的应用,二阶 IIR 滤波器(有时称为“双二阶”)是一个很好的选择。我在这里有一个关于二阶双二阶的教程。它面向音频应用程序,但您可能会发现它很有用。请记住,本教程使用 Direct Form I,它在数值上更稳定,但需要更多内存位置。不过,在四个位置,我认为即使对于内存严重不足的应用程序也没什么好担心的。

于 2013-05-27T15:58:17.557 回答