[hpsdr] new architecture - FFT front-end

John Miles jmiles at pop.net
Tue Sep 9 16:41:46 PDT 2014


There's no inherent loss of information in the FFT/IFFT process, except to
the extent that you're applying a continuous transform to a discrete chunk
of data.  For lossless recovery of the input data in an FFT->IFFT pipeline,
you can't treat each block of data as an independent entity.  You have to do
some redundant processing by overlapping the first part of each new block
with the last part of the previous one.   It's often convenient to do this
at the same time that you apply windowing to force the data to match up at
either end of your buffer.  You'll see the term "windowed overlap-add" or
"WOLA" used frequently when someone is using an FFT as part of a stream
processing pipeline.

Alberto's on the right track with regard to using Matlab's FFT and IFFT
function to digitize a chunk of data, but without windowing there will be
massive transient artifacts in the recovered data, since the input data
isn't a continuous function.  Likewise, without an overlap-add operation,
you can't work with a series of successive buffers.  

It can be instructive to look at how the MP3 codec works.  They use a DCT,
which is the real part of the FFT, with overlap-add windows between each
~20-millisecond chunk of data.  The compression process takes advantage of
the fact that strong signals in some DCT bins can make it unnecessary to
preserve weak signals in other bins. 

-- john, KE5FX


> > (*) An FFT is fundamentally calculating an approximation (average
> > intensity of a frequency over the frame) so there is some information
> > loss when calculating an FFT.
> 
> I've been considering this since I read it, trying to figure out where
> the loss of information is with an FFT.  Obviously it's only looking at
> a window of the much larger set of input samples but I think an Inverse
> FFT really ought to return the samples in that window accurately.  I
> suppose there's always a little loss due to the finite precision
> arithmetic from fixed sized numbers but beyond that, where is the
> information loss?
> 
> One DSP course I took described DFT as a change of basis in Hilbert
> space.  Changing bases should always be a reversible function, I would
> think.
> 
> 


 1410306106.0


More information about the Hpsdr mailing list