I need to compensate a OFDM-16_qam constelation rotation but I could not find out how to implement it with MATLAB I have a Matrix [48 x 25] where each colum is a OFDMsymbol without CP , pad and pilots, this matrix was passed through a Multipath channel using the matlab command Ch=rayleigh and filter(CH,OFDMsymbol) and so the pilots modulated in bpsk . With this pilots I've constructed a Pilot_matriz with each colum (an OFDM symboll) has an angle to be compensate. The OFDMsymboll is a complex number as +/-a+/-ib and I have the angles (theta) in rad from the pilot matrix but I'm not find a way to turn bach the theta angle from the complex number +/-a+/-ib. any suggestions Regards Luiz
1 Answers
It's not completely clear from your question, but I interpret your situation as:
You have a set of OFDM symbols that have been passed through a multipath channel.
You have generated an equalization matrix of phase shifts (in radians) that you want to apply to each subcarrier of each symbol.
You're not sure how to apply the phase shifts to the OFDM symbols.
Being able to implement an equalizer via simple multiplication is one of the benefits of OFDM, since one can assume that fading is flat across each subcarrier's channel. To apply a phase shift of $\theta$ radians to a complex number $x = a + jb$, do the following multiplication:
$$ \tilde x = e^{j\theta}x $$
$$ \begin{align*} \tilde x &= \left(\cos(\theta) + j \sin(\theta)\right) \left (a + jb\right) \\ &= \left(a \cos(\theta) - b \sin(\theta)\right) + j \left(a \sin(\theta) + b \cos(\theta) \right) \end{align*} $$
- 24,595
- 2
- 67
- 74