Im working on a project in which I should FFT a signal coming into my FPGA from ADC. I want my FFT to show the peak values as clear as possible without the side lobes.
The solution should be straight forward: Window the time domain signal before FFT and I will get better results in the frequency domain, for example using Hamming Window.
But I encountered another approach to this, apply the WOLA (Weight, OverLap, Add) algorithm on the signal before the FFT.
So I used Matlab to check the results.
I want to decrease the side lobes of this fft, so the straightforward approach is to create a hamming window, and multiply it with the signal, like this:
% Generate Hamming Window using Equation: n = [1:1024]; w = 0.54 - 0.46*cos(2*pi*n/1024); % Apply Hamming Window on Input Signal: hamming_sim = din_window.*w;
and now lets FFT this new windowed signal:
fft_hamm_sim = abs(fft(hamming_sim)); fft_hamm_sim(1) = 0; fft_hamm_sim(2) = 0; fft_hamm_sim(1024) = 0;
OK so I am getting a good result as expected.
I encounterd another approach which requires taking the time domain
hamming_window*input_signal, and apply WOLA on it and this is how I did it (I will be glad if someone will alert me if its not the right way):
I took the windowed signal and added the first array element with the middle array element and then the second array element added with the
middle+1 array element, like this:
wola_sim = zeros; i = 1; for k = 1:512 wola_sim(i) = hamming_sim(k) + hamming_sim(k+512); i = i+1; end
and now on this signal i applied FFT:
fft_wola_sim = abs(fft(wola_sim)); fft_wola_sim(1) = 0;
It is still decreasing the side lobes but it is easy to see that the result worse.
Am I applying the WOLA algorithm right? Apply hamming window and than add the first half of the array with the second half.
Suppose I apply the WOLA right, what is it used for? Is it really suppose to help me supress the side lobes before the FFT? Why I getting worse result than only hamming window?
For my needs, is it okay to just use the Hamming window?