哪种DSP滤波器算法易于实现?

时间:2013-05-26 08:55:02

标签: c algorithm filter filtering signal-processing

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

在不需要缓冲区或大功能的情况下,我可以轻松实现哪些类型的过滤器?

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

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

是否有其他众所周知的DSP滤波器可以在几行中完成?

1 个答案:

答案 0 :(得分:1)

没有一些缓冲就不可能实现频率选择性滤波。即使您提供的示例也需要一个样本的缓冲区。首先,forget about FFT filtering for most realtime data.对于大多数过滤应用程序,以及当然关注内存的应用程序,您将需要使用时域过滤器。

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

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

对于广泛的应用,二阶IIR滤波器(有时称为“双二阶”)是一个很好的选择。我有关于二阶双二阶here的教程。它面向音频应用程序,但您可能会发现它很有用。请记住,本教程使用的是Direct Form I,它在数值上更稳定,但需要更多的内存位置。不过,在四个地方,我认为即使对于高度记忆匮乏的应用程序也不会感到烦恼。