If your frames are contiguous samples from a stream of data, then
you should really save state between frames, or you will get chirps at
frame boundaries. Find a way to live with the m/2 delay.
If the data frames are standalone sequences that do not represent
streams, read on.
With a symmetric FIR filter of length 2L+1, the group delay is L.
Convolving that with a vector of length K would yield a full convolution
sequence of length K+2L.
Assuming you are using a Matlab-style filter that gives you all of the
input-on transient and none of the input-off transient; Drop L samples
from the input-on transient and pad L zeros on the end of your input
If all the above is true, this should nicely superimpose the input &
output vectors. The beginning and ending of the sequence will show some
warbling, but *if* you don't know what the signal was before or after,
then this is about as good as you can do.
I repeat. If the frames are chunks of a continuous signal -- keep the
state and find a way to deal with the group delay.
-- Mark Borgerding