【发布时间】:2011-03-06 07:50:42
【问题描述】:
实现低通 FIR 滤波器,什么时候应该使用 FFT 和 IFFT 而不是时域卷积?
目标是实现实时计算所需的最低 CPU 时间。据我所知,FFT 的复杂度约为 O(n log n),但时域中的卷积复杂度为 O(n²)。要在频域实现低通滤波器,应该使用 FFT,然后将每个值乘以滤波系数(转换为频域),然后进行 IFFT。
那么,问题是什么时候使用基于频率的 (FFT+IFFT) 滤波而不是使用基于直接卷积的 FIR 滤波器是合理的?比如说,如果一个有 32 个定点系数,是否应该使用 FFT+IFFT? 128个系数怎么样?等等……
试图优化现有的源代码(基于卷积的 FIR 滤波器),我完全糊涂了,要么我应该使用 FFT,要么只是优化它以使用 SSE。
【问题讨论】:
标签: c math audio signal-processing fft