MATLAB `filter()` 函数怎么这么快?

信息处理 matlab 无限脉冲响应 有限脉冲响应 软件实现
2021-12-29 02:00:46

filter()在 MATLAB 中是如何实现的?怎么这么快?
FIR 滤波器的最快实现是什么?

2个回答

实际上,该函数的 MATLAB 实现似乎filter()非常简单,而且速度不快。

如需快速实现,请查看 Jan Simon 的FilterM

更新

在 MATLAB 的最新版本(从 R2016b 及更高版本)中,该filter()函数的性能得到了改进。
加速这些操作的方法通常基于:

  1. 利用矢量化 / SIMD 操作(SSE / AVX in x86)。
  2. 多线程。
  3. 循环展开。

更新 (2021):
在最近的 MATLAB 版本中,该函数使用并行化和矢量化进行了加速。

filter() 实现了一个 IIR 滤波器。你提到了 FIR 滤波器。虽然 IIR 是 FIR 的泛化,但将它们视为两个不同的东西 wrgt 优化是有道理的。

通常,MATLAB 可以使用在 FORTRAN、C 或汇编中实现的库或点优化,使用算法优化,以及 SIMD、多线程或任何其他使函数更快同时仍被认为足够通用和准确的巧妙技巧