使用 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 进行卷积的速度有多快的主要内容,如果未能解决你的问题,请参考以下文章