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.
Lets assume I am capturing this noisy signal through the FPGA:
so first I will check what is the FFT without any window:
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.
My questions:
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?