# WOLA vs Simple Hamming Window on signal before FFT

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:

1. Am I applying the WOLA algorithm right? Apply hamming window and than add the first half of the array with the second half.

2. 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?

3. For my needs, is it okay to just use the Hamming window?

• The purpose of WOLA (and OLA for that matter) is to resynthesize (recombine) the multiple, overlapping fft segments (chunks) in order to generate a time domain signal (waveform). It should not be used for fft analysis so it's not appropriate for your use case. As for question #3, using a Hamming window is fine. May 21 '20 at 7:05
• @dsp_user Could I please ask you to turn the comment into an answer so that we close the question "gracefully"? This gives Michael Astahov the opportunity to accept / upvote it too. Otherwise, it is likely that it will be circulating the board as "unanswered" which is not what is really hapenning here.
– A_A
May 21 '20 at 10:45

## 1 Answer

I'll try to briefly answer your questions.

1. No, WOLA (weighted overlap and add) is applied directly on the result(s) of an inverse FFT operation. The IFFT results ( time segments ) are first multiplied by a particular window function (e.g Hamming ) and then overlap-added to produce the final time domain signal ( waveform ).

2. As explained in #1, WOLA is used to generate a time domain signal from multiple, overlapping ifft segments. If you have only a single fft segment (from your FFT analysis), then there's no need for (W)OLA at all.

3. Yes