We know overlap-add of a en-framed signal can be done easily by following code

function y = overlapAdd(frame, hop)
frameLen = size(frame, 1);
nframes = size(frame, 2);
xlen = frameLen + (nframes-1)*hop;
y = zeros(xlen, 1);
for l = 1 : nframes
    y(1+(l-1)*hop : frameLen+(l-1)*hop) = y(1+(l-1)*hop : frameLen+(l-1)*hop) + frame(:, l);

My question is, is there a computation form of overlap-add that uses solely matrix multiplication?

Since overlap-add is a linear operation, it can be represented by one or more matrix multiplications.

  • 1
    $\begingroup$ hah! For overlap-add to be a linear operation, how do you formulate the input? $\endgroup$ Feb 7 at 15:49

1 Answer 1


Forming a square matrix with mostly zeros but each input frame along rows, shifted by eg half a frame each, then summing (accumulating) each column seems like the most intuitive matrix operation here?


 tmp = …
[x1 x2 0 0 …
 0  y1 y2 0 …
 0  0  z1 z2]
Out = sum(tmp, 1);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.