使用FIR滤波器过滤频谱

时间:2012-10-27 20:29:00

标签: matlab filter signal-processing

如果我有信号值x [T]和滤波器系数b [i],我可以使用卷积执行滤波。 enter image description here

假设我有x的频谱(在FFT之后)并且我需要使用滤波器系数执行滤波,我该如何执行此操作?我听说在频域中它会成倍增加,而不是卷积(时域)。但我找不到使用它的方程式。我在y = fft(x [T])向量和119个滤波器系数(使用fdatool生成)中有614000个值,我无法直接将它们相乘...谢谢。

2 个答案:

答案 0 :(得分:3)

您将需要零填充信号值x的频谱和零填充(到相同长度)FIR滤波器内核b的FFT,以便通过乘法进行快速卷积。否则,如果没有零填充,您将最终进行循环卷积而不是线性卷积。

对于长数据向量和相对较短的FIR滤波器内核,并且为了避免需要非常长的FFT和IFFT,您可能需要研究重叠相加或重叠保存的快速卷积算法。

答案 1 :(得分:1)

您还需要将过滤器转换为频域。然后在频域中,您可以使用逐元素乘法。

http://en.wikipedia.org/wiki/Convolution_theorem