I take blocks of incoming data and pass them through fftw to get some spectral information. Everything seems to be working, however I think I'm getting some aliasing issues.
I've been trying to work out how to implement a hann window on my blocks of data. Google has failed me for examples. Any ideas or links I should be looking at?
double dataIn[2048] > /* windowing here? */ > FFT > double freqBins[2048]
Update
Thanks to Oli for pointing out the issue I'm actually trying to fix is spectral-leakage, NOT aliasing...
http://en.wikipedia.org/wiki/Hann_function . The implementation follows from the definition quite straightforwardly. Just use the w(n)
function as multiplier, loop through all your samples (changing n
as you go), and that's it.
for (int i = 0; i < 2048; i++) {
double multiplier = 0.5 * (1 - cos(2*PI*i/2047));
dataOut[i] = multiplier * dataIn[i];
}