实现低通FIR滤波器时,何时应该使用FFT和IFFT而不是时域卷积?
目标是实现实时计算所需的最低CPU时间。据我所知,FFT的复杂度约为O(n log n),而时域卷积的复杂度为O(n²)。要在频域中实现低通滤波器,应该使用FFT,然后将每个值与滤波系数相乘(这些系数被转换为频域),然后进行IFFT。
那么,问题是什么时候使用基于频率的(FFT + IFFT)过滤器而不是使用直接卷积的FIR过滤器?例如,如果有32个定点系数,应该使用FFT + IFFT吗?128个系数呢?等等...
尝试优化现有源代码(基于卷积的FIR滤波器),我完全困惑了,是使用FFT还是只是优化它以使用SSE或不使用。
目标是实现实时计算所需的最低CPU时间。据我所知,FFT的复杂度约为O(n log n),而时域卷积的复杂度为O(n²)。要在频域中实现低通滤波器,应该使用FFT,然后将每个值与滤波系数相乘(这些系数被转换为频域),然后进行IFFT。
那么,问题是什么时候使用基于频率的(FFT + IFFT)过滤器而不是使用直接卷积的FIR过滤器?例如,如果有32个定点系数,应该使用FFT + IFFT吗?128个系数呢?等等...
尝试优化现有源代码(基于卷积的FIR滤波器),我完全困惑了,是使用FFT还是只是优化它以使用SSE或不使用。