I am working on estimation of carrier frequency offset for QPSK data from a satellite. From my understanding, there are two main approaches: either remove data from the carrier (by taking the fourth power), or with band-edge filtering, or some other method of measuring difference of energy content in positive and negative parts of the spectrum.
In my particular case I have the signal converted to base-band (and with some offset). I'm now trying to estimate that offset. I can correctly estimate offset by taking the fourth power of the signal, and then running an FFT on that signal. However, I'm struggling with band-edge filtering, and it seems that the issue is not my implementation of the filter, but rather, the signal itself. While the algorithm works like charm on synthetic QPSK data, when I run it on some real satellite data, it is not able to compensate for frequency offset. I tried to find the cause of this behavior, and I was able to find that the signal spectrum is asymmetrical, and negative frequency content is having more energy than positive, as shown in the figure below (figure shows FFT of signal with frequency offset removed). What I do not understand why there is such a difference in the energy in the positive and negative parts of the spectrum, and I would appreciate if somebody could provide me some insight into this.