I am working on a project with QPSK modulation format and a RRC filtering at the transmitter (TX) side. The channel introduces a constant dropper shift ($f_d$) to the received signal. To make the channel ISI free, the same RRC filter is used on the receiver (RX) side.
To remove this $f_d$, a practical ML frequency offset estimator is used [1].
This method is derived by assuming this $f_d$ is small enough. Therefore, after some mathematical manipulation, the decision statistics can be narrowed down to
$$\max(\lvert \text{fft}(c(k)^**y(k)\rvert),$$
where y(k) is the received r(k) filtered by a RRC matched to the RRC at TX, and c(k) is the transmitted data symbol (sample). To eliminate c(k) in the statistics, the $(c(k)^**y(k) )^4$ is used before fft operation is performed. The upsampling rate is 10. I couldn't see any issues in this process. Besides, I also tried to do $((c(k)*y(k))^4 )^{\frac 14}$ in order to eliminate the effect on the magnitude of the filtered received signal, but this gives me a huge DC component.
Finally, the algorithm works very well without RRC filtering at TX and RX. It also works very well without this $f_d$. So the problem should be something related this pulse shaping part.
Could anybody see any problems in this process?
[1]. U. Mengali et al: "Synchronization Techniques for Digital Receivers".