Forums

fft and windowing

Started by heavyfranz October 26, 2011
Hi, I'm doing a spectrum analyzer. i collect 4096 samples of data from
codec then I stop interrupt and begin fft.
The algoritm that I use ( in the ti's dsplib) does not provide a windowing,
so I don't understand if would be ok to do some "by-hand weighted
windowing" multiplying a window with the frame of data, without
implementing an overlap-add function. And secondarily, is right to do a
"fake overlap-add" simply multiplying sample with a new window function
that is a sum of a window and it's copy shifted?

Pictorically

MY DATA
|--------------||--------------||--------------||--------------|

WINDOW (Blackman,triangular, hann...)
       -               -               -               -
     -   -            -   -          -   -           -   -
   -       -       -       -       -       -        -       -   
-             -  -             - -             - -             -



Hi Heavyfranz,
All you need to do is to apply a window function to each 
batch of 4096 samples. Don't use a triangular window though; 
its only advantage is that it is marginally easier to 
calculate a triangular function.

You mention "overlap add."  this technique would be used
  only if you were intending to implement a filter function 
in addition to the spectrum analysis you mention. In that 
case, if you are filtering using FFT-based convolution, it 
is essential that you do not window the data because 
windowing would cause severe modulation in the resulting 
time-domain output of the filter.

Regards,
John


On 27/10/2011 1:50 AM, heavyfranz wrote:
> Hi, I'm doing a spectrum analyzer. i collect 4096 samples of data from > codec then I stop interrupt and begin fft. > The algoritm that I use ( in the ti's dsplib) does not provide a windowing, > so I don't understand if would be ok to do some "by-hand weighted > windowing" multiplying a window with the frame of data, without > implementing an overlap-add function. And secondarily, is right to do a > "fake overlap-add" simply multiplying sample with a new window function > that is a sum of a window and it's copy shifted? > > Pictorically > > MY DATA > |--------------||--------------||--------------||--------------| > > WINDOW (Blackman,triangular, hann...) > - - - - > - - - - - - - - > - - - - - - - - > - - - - - - - - > > >