# Recover IQ samples from signal

I have a data acquisition device that provides me with an array of integers that represents a modulated signal (let's say QAM16).

I would like to recover the I and Q samples from the raw time-domain signal, so that I can demodulate the data. Is this possible? If so, how would I do it.

• If you're trying to recover the original I and Q samples, then in what format are the samples you're starting with? Are they a real-valued sampled signal that you would like to convert to complex baseband? – Jason R Jul 26 '17 at 1:26
• That's correct. The received signal is in a vector of real integers. And I want to convert them to a complex (I/Q) baseband so I can demodulate the symbols. – user2562609 Jul 26 '17 at 2:41
• Are the samples of a baseband signal? Or modulated to some much higher frequency. – hotpaw2 Jul 26 '17 at 16:15
• Shouldn't you be receiving two streams, one for the inphase and other for the quadrature phase, since at the RF you would have downconveted/decorrelated with inphase and quadrature phase sinusoids – Dsp guy sam Apr 12 '20 at 16:41

## 1 Answer

If you just want to demodulate, then it is not necessary to recover I and Q components. What you have is most likely the QAM symbols. For example, for $16$-QAM they are $16$ different integer values that are assigned to different constellation points. You need to know the type of assignment (i.e. coding) that is used in the QAM constellation at the modulator.

At the $16$-QAM modulator, every $\log_2 16=4$ data bits are mapped to a certain constellation point (which ultimately is identified by an integer). For instance, $0101$ can represent the symbol $5$, and so on. Gray coding is usually used for this purpose, but it is not always the case. So you need to find out the exact constellation mapping and then, the demodulation process is nothing more than the inverse of that mapping. So when there is a $5$ your data bits are $0101$.

• The receiver may not sample at the same points as the transmitter. Typically what is done to correct for this? – user2562609 Jul 26 '17 at 5:53
• @user2562609 You need to detect the Symbol Boundary. And that is done by Timing Synchronization techniques. – DSP Rookie Apr 21 '20 at 14:33