为什么FFT会加速卷积中涉及的计算?

时间:2013-01-30 06:16:30

标签: image-processing signal-processing fft convolution

我看到很多文献中他们说通过使用fft可以达到更快的卷积。我知道一个人需要获得fft然后从结果中获取,但我真的不明白为什么使用fft可以使卷积更快?

1 个答案:

答案 0 :(得分:5)

FFT加速卷积以获得足够大的滤波器,因为卷积需要对每个输出样本进行N次乘法(和N-1)次加法,相反(2)对N个样本的块进行N ^ 2次运算。

考虑到,必须通过添加零来使FFT处理的块大小加倍,每个块需要执行FFT的2(2)*(2N)* log(2N)运算,2N运算再乘以4N * log (2N)执行逆FFT的操作,有一个收支平衡点,其中8Nlog2N <= 2N ^ 2.

根本原因是:

1)离散时域信号可以表示为频率之和 2)时域卷积(O(N ^ 2))等于频域中的频率倍增(O(N)) 3)转型是可逆的 4)存在一种在少于N ^ 2个操作中将信号从时域转换到频域的方法(这是'快速傅立叶变换'中的第一个F)。

直接FT是O(N ^ 2),其中每个频域元素F(i)= Sigma f(i)* exp(i * pi / N)。

然而,FFT基于exp(i * pi / N)具有某些对称性的观察,允许计算在奇数/偶数向量中分割。偶数矢量可以以O(N)为代价来计算,而奇数矢量需要一半大小的完整FT。由于这可以重复直到N = 2,因此总体复杂度将与Nlog(N)成比例。