我有一个内存很小的数据记录器,我想在固件中实现对过滤器的支持。
我可以轻松实现哪些类型的过滤器而不需要缓冲区或庞大的功能?
想到的是指数移动平均线,例如:
sample = (alpha * new_sample) + (1.0 - alpha) * sample
有没有其他著名的 DSP 滤波器可以用几行代码完成?
最佳答案
没有一些缓冲是不可能实现频率选择性过滤的。即使您给出的示例也需要一个样本的缓冲区。首先,forget about FFT filtering for most realtime data.对于大多数过滤应用程序,当然还有您关心内存的应用程序,您将需要使用时域过滤器。
时域滤波器通常有两种优点,IIR 和 FIR。过滤器也根据它们的“顺序”来区分。您在上面给出的示例是一阶 IIR 滤波器。相关事实是:
- 从广义上讲,对于给定响应,IIR 滤波器需要的阶数低于 FIR。
- 可以使用与过滤器阶数相等的多个内存位置来实现过滤器。这并不总是实现过滤器的最佳方式,但可以使用名为 Direct Form II 的东西来完成。 .
对于广泛的应用,二阶 IIR 滤波器(有时称为“双二阶滤波器”)是一个很好的选择。我有一个关于二阶双二阶的教程 here .它面向音频应用程序,但您可能会发现它很有用。请记住,本教程使用直接形式 I,它在数值上更稳定,但需要更多的内存位置。不过,我认为即使对于内存严重匮乏的应用程序,在四个位置也没有什么好担心的。
关于c - 哪些 DSP 滤波器算法易于实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16757675/