Overlap-Add/Save

This example shows how to filter a sinusoid with the Overlap-Add and Overlap-Save FFT methods using the Frequency-Domain FIR filter block.

006beec4777b3ad2016ab71880d5ad32.png

3606cef5cee5a219d6c7d6de1e918b29.png

The overlap-add algorithm [1] filters the input signal in the frequency domain. The input is divided into non-overlapping blocks which are linearly convolved with the FIR filter coefficients. The linear convolution of each block is computed by multiplying the discrete Fourier transforms (DFTs) of the block and the filter coefficients, and computing the inverse DFT of the product. For filter length M and FFT size N, the last M-1 samples of the linear convolution are added to the first M-1 samples of the next input sequence. The first N-M+1 samples of each summation result are output in sequence.

The overlap-save algorithm [2] also filters the input signal in the frequency domain. The input is divided into overlapping blocks which are circularly convolved with the FIR filter coefficients. The circular convolution of each block is computed by multiplying the DFTs of the block and the filter coefficients, and computing the inverse DFT of the product. For filter length M and FFT size N, the first M-1 points of the circular convolution are invalid and discarded. The output consists of the remaining N-M+1 points, which are equivalent to the true convolution.

Overlap-save and overlap-add introduce a processing latency of N-M+1 samples. You can reduce this latency by partitioning the numerator into shorter segments, applying overlap-add or overlap-save over the partitions, and then combining the results to obtain the filtered output [3]. The latency is reduced to the partition length, at the expense of additional computation compared to traditional overlap-save/overlap-add (though still numerically more efficient than time-domain filtering for long filters). In this model, we use a partition length of 30, which reduces the latency from 213 samples for traditional overlap-add/overlap-save to 30 samples.

References

[1] Overlap-Add Algorithm: Proakis and Manolakis, Digital Signal Processing, 3rd ed, Prentice-Hall, Englewood Cliffs, NJ, 1996, pp. 430 - 433.

[2] Overlap-Save Algorithm: Oppenheim and Schafer, Discrete-Time Signal Processing, Prentice-Hall, Englewood Cliffs, NJ, 1989, pp. 558 - 560.

[3] T. G. Stockham Jr., "High-speed convolution and correlation", Proc. 1966 Spring Joint Computer Conf., AFIPS, Vol 28, 1966, pp. 229-233.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐