c - 哪些 DSP 滤波器算法易于实现?

标签 c algorithm filter filtering signal-processing

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

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

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

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/

相关文章:

无法打开输出文件,权限被拒绝错误 : Id returned 1 exit status

c - `make` 没有手动编写Makefile

C编程: I have an error in creating a binary search tree using C

python - 如何提高 Python 中查找最常见字符串的性能?

python - FSharp 运行我的算法比 Python 慢

algorithm - 二维数组中的总水容量,表示地形图

java - Android 蓝牙 LE 屏蔽 UUID 过滤器

c - 使用 libusb 输出不正确

javascript数组按对象键过滤重复项

filter - 如何在代码中将引用电影添加到ffmpeg psnr过滤器中(计算psnr)