Time domain convolution in a real-time situation
Hi group,
I'm still working on my software BFSK-modem project.
More specifically, i want to use better filters, so I'm experimenting
with a windowed sinc filter (Blackman window).
I can succesfully calculate the impulse response H[]
My problem is that when I apply the filtering algorithm ( as found in
ch. 16 of The Scientist & Engineer's Guide to DSP ) , that the first M
output datapoints in Y[] are zero. ( M = length of H[] )
Quote example code:
N=4999, M=100
for j := 100 to 4999 do
begin
Y[j] := 0;
for i:= 0 to 100 do
Y[j] := Y[j] + X[j-i] * H[i];
end;
If this were only a transient startup effect, it wouldn't be a problem,
but if I apply the algorithm on each incoming datablock, then I will
obviously "loose" data.
I understand why the first M points must be zero in a "statical"
situation, but can't figure out how to handle this in a real-time
environment, so that I get a continuous filtered output.
I have read about OLA/OLS, but all examples seemed to apply only to FFT
filters.
Please bear with me, my mathematical background leaves a lot to be
desired :0(
|