In signal processing, the overlap–add method is an efficient way to evaluate the discrete convolution of a very long signal x [ n ] {\displaystyle x[n]} with a finite impulse response (FIR) filter h [ n ] {\displaystyle h[n]} :
where h [ m ] = 0 {\displaystyle h[m]=0} for m {\displaystyle m} outside the region [ 1 , M ] . {\displaystyle [1,M].} This article uses common abstract notations, such as y ( t ) = x ( t ) ∗ h ( t ) , {\textstyle y(t)=x(t)*h(t),} or y ( t ) = H { x ( t ) } , {\textstyle y(t)={\mathcal {H}}\{x(t)\},} in which it is understood that the functions should be thought of in their totality, rather than at specific instants t {\textstyle t} (see Convolution#Notation).
Algorithm
The concept is to divide the problem into multiple convolutions of h [ n ] {\displaystyle h[n]} with short segments of x [ n ] {\displaystyle x[n]} :
x k [ n ] ≜ { x [ n + k L ] , n = 1 , 2 , … , L 0 , otherwise , {\displaystyle x_{k}[n]\ \triangleq \ {\begin{cases}x[n+kL],&n=1,2,\ldots ,L\\0,&{\text{otherwise}},\end{cases}}}
where L {\displaystyle L} is an arbitrary segment length. Then:
x [ n ] = ∑ k x k [ n − k L ] , {\displaystyle x[n]=\sum _{k}x_{k}[n-kL],\,}
and y [ n ] {\displaystyle y[n]} can be written as a sum of short convolutions:
y [ n ] = ( ∑ k x k [ n − k L ] ) ∗ h [ n ] = ∑ k ( x k [ n − k L ] ∗ h [ n ] ) = ∑ k y k [ n − k L ] , {\displaystyle {\begin{aligned}y[n]=\left(\sum _{k}x_{k}[n-kL]\right)*h[n]&=\sum _{k}\left(x_{k}[n-kL]*h[n]\right)\\&=\sum _{k}y_{k}[n-kL],\end{aligned}}}
… excerpt ends here. Continue reading the full article.



