我有一个内存很小的数据记录器,我想在固件中实现对过滤器的支持。
我可以轻松实现哪些类型的过滤器而不需要缓冲区或庞大的函数?
想到的是指数移动平均线,例如:
sample = (alpha * new_sample) + (1.0 - alpha) * sample
是否有任何其他著名的 DSP 滤波器可以在几行内完成?
我有一个内存很小的数据记录器,我想在固件中实现对过滤器的支持。
我可以轻松实现哪些类型的过滤器而不需要缓冲区或庞大的函数?
想到的是指数移动平均线,例如:
sample = (alpha * new_sample) + (1.0 - alpha) * sample
是否有任何其他著名的 DSP 滤波器可以在几行内完成?
没有一些缓冲就不可能实现频率选择性滤波。即使您给出的示例也需要一个样本的缓冲区。首先,忘记大多数实时数据的 FFT 过滤。对于大多数过滤应用程序,当然还有您关心内存的应用程序,您将需要使用时域过滤器。
时域滤波器通常有两个优点,IIR 和 FIR。过滤器也根据它们的“顺序”来区分。您上面给出的示例是一阶 IIR 滤波器。相关事实如下:
对于广泛的应用,二阶 IIR 滤波器(有时称为“双二阶”)是一个很好的选择。我在这里有一个关于二阶双二阶的教程。它面向音频应用程序,但您可能会发现它很有用。请记住,本教程使用 Direct Form I,它在数值上更稳定,但需要更多内存位置。不过,在四个位置,我认为即使对于内存严重不足的应用程序也没什么好担心的。