This week I dealt with the OFDM estimation algorithm and it’s C++ implementation. Although the algorithm did show nice recognition ability, it’s performance could not be increased to a usable level. Therefore the algorithm will now be replaced.

## OFDM parameter estimation

The algorithm introduced in the last blog post [1] was tested with different scenarios and together with my mentors, we decided to use it for the OFDM estimation block. Unfortunately, it had some issues with sampling offsets, that could be fixed when using a finer grid of trail values for FFT and CP length. This refinement of the trail values lead to an unusable performance, even with the C++ implementation, that I did this week.

I tried different approaches to speed the algorithm up (fast convolution, VOLK) but the CPU load was still too high. Since the algorithm is hard to implement performantly, me and my mentors chose to search for another algorithm since the optimization takes too much time. Also, my work got too scientific and detailed here when deducing approaches by pen and paper instead of actually writing code.

As I’m not writing a thesis but implement a functional toolbox, we chose to use a more straight-forward algorithm developed by my mentor Sebastian Koslowski, that was already tested in field. Generally both algorithms do the same: correlate the received signal with a time- and frequency shifted version of itself and search for peaks. The algorithm in [1] has in addition a correlation between time and frequency shift, that may lead to better results. For sake of low implementation effort, this correlation is now abandoned in Koslowski’s algorithm. I did some Python prototyping today and results look good (performance is **huge** in comparison to [1]).

## ToDo

I hope to get this topic done by next week and then start with the frequency and timing synchronization.

[1] Bouzegzi, Abdelaziz, Philippe Ciblat, and Pierre Jallon. “New algorithms for blind recognition of OFDM based systems.” *Signal Processing* 90.3 (2010): 900-913.