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.

  • 1
    $\begingroup$ 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? $\endgroup$
    – Jason R
    Jul 26, 2017 at 1:26
  • $\begingroup$ 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. $\endgroup$ Jul 26, 2017 at 2:41
  • $\begingroup$ Are the samples of a baseband signal? Or modulated to some much higher frequency. $\endgroup$
    – hotpaw2
    Jul 26, 2017 at 16:15
  • $\begingroup$ 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 $\endgroup$ Apr 12, 2020 at 16:41

1 Answer 1


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$.

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.