使用 FFT 进行卷积的速度有多快

Posted

技术标签:

【中文标题】使用 FFT 进行卷积的速度有多快【英文标题】:How Fast is Convolution Using FFT 【发布时间】:2018-04-12 11:04:18 【问题描述】:

我读到,为了计算两个信号 x,y(例如 1D)的卷积,naïve 方法采用 O(NM)

然而,FFT 用于计算 FFT^-1(FFT(x)FFT(y)),在 N>M 的情况下采用 O(N log(N))

我想知道为什么这种复杂性被认为比前一种更好,因为 M 不一定大于 log(N)。此外,M 通常是滤波器的长度,它不会随要过滤的信号而缩放,实际上会给我们提供更类似于O(N) 而不是O(N^2) 的复杂度。

【问题讨论】:

可能重复:Low pass filter using FFT instead of convolution implementation 【参考方案1】:

当滤波器的大小超过特定阈值时,频域中的快速卷积通常比直接卷积更有效。因此,对于相对较小的过滤器,直接卷积更有效,而对于较长的过滤器,基于 FFT 的卷积更有效。这个“临界点”的实际 m 值取决于很多因素,但通常在 10 到 100 之间。

【讨论】:

以上是关于使用 FFT 进行卷积的速度有多快的主要内容,如果未能解决你的问题,请参考以下文章

暴力破解 PBKDF2 的速度有多快?

AlchemyData 新闻 API 摄取和提供新新闻文章的速度有多快?

与 Python 相比,C++速度有多快?

SPI读写SD卡速度有多快?

阿里云服务器不同宽带下载上传速度有多快?

阿里云服务器不同宽带下载上传速度有多快?