I am relatively new to signal processing and I would like to correctly draw a constellation diagram to check the results of a study. I need my signal processing to be close as them to make sure I am doing it correctly.

I am trying to use constellation diagrams to fingerprint ADS-B signals which use a PPM (pulse position modulation) scheme.

Considering I got some IQ data, is it sufficient to do a scatter plot of the IQ data to call it a constellation diagram, or do I need to collect only samples from IQ data that are in special position s(like the position of the pulses?)

I am also asking this question because I do not get exactly the plot that the study shows for the constellation diagram. I would be very thankful if someone can point why there is a difference or something I missed/misunderstood.

Here is the link of the study

You can find the plots on page 4, FIGURE 8. What they call contour stellar image is just a constellation diagram but with colors based on density of points nearby from what I understood (FIGURE 7.)

Using the following Python code:

    from scipy.stats import gaussian_kde
    import matplotlib.pyplot as plt
    fig = plt.figure()
    ax = fig.add_subplot(111)
    xy = np.vstack([in_phase,quadrature])
    z = gaussian_kde(xy)(xy) #This is just to get colors to see better
    ax.scatter(in_phase, quadrature, c=z)

I get the following images (2 exemple):

enter image description here

enter image description here

  • $\begingroup$ Can you elaborate on “IQ” data? Is it baseband data? $\endgroup$
    – Keegs
    Commented Dec 29, 2020 at 20:34
  • $\begingroup$ Use plt.plot(np.real(samples), np.imag(samples), '.') $\endgroup$
    – Leo89
    Commented Feb 17, 2023 at 0:54

2 Answers 2


Typically a constellation diagram is not just the raw RF values because that would be extremely disorganized. You would end up with a bunch of points in a gaussian distribution about the origin (thermal noise) and a "ring" around it that represents your signal at any particular phase during the sampling.

What you typically want to plot is the baseband signal, the RF after it is filtered, mixed against the carrier wave, and coherent (phase-locked). This will indicate which constellation values are being received with some noise (hence why in Figure 7 they are scattered about the data positions). I have no idea what is going on in Figure 8, but it's not a constellation diagram. It looks like something of the author's own invention to better analyze the given data.

  • $\begingroup$ I am working with the raw RF values. I am not sure I understand the different terms you used to make a baseband signal, but the protocol of the ADS-B signals is non-coherent: the behaviour of the phase is not specified. So I am not sure how this is useful my for problem plus I want to do fingerprinting so too much data preprocessing might kill the potential "hidden patern". To be honest and from my understanding of what is the purpose of the Constellation Diagram, I think the authors of the study just wanted to avoid the term scatterplot. I have sent them an e-mail so we will see. $\endgroup$ Commented Dec 30, 2020 at 14:36
  • $\begingroup$ Also I think the authors just used the absolute values of the in-phase component (without mentionning it) so that the questions "where to center the plot?, where does the plot starts/end?" become easier. Doing this I get scatterplots/constellation diagram that are similar to them. $\endgroup$ Commented Dec 30, 2020 at 14:39
  • $\begingroup$ If It’s incoherent, just make sure the carrier mixing is as accurate as possible or your symbols will drift in phase. I’m not sure what the author’s intent is regarding Figure 8, but I can tel you that your constellation diagram should at least start off looking like Figure 7. Those concentrations at positions separated by 90 degrees of phase are the constituent symbols. Where are you getting the IQ data? What is its center frequency and sampling rate? $\endgroup$
    – Keegs
    Commented Dec 30, 2020 at 15:29
  • $\begingroup$ "the protocol of the ADS-B signals is non-coherent" Could you edit your question to include that? $\endgroup$
    – TimWescott
    Commented Jan 23, 2022 at 21:49

Considering I got some IQ data, it is sufficient to do a scatter plot of the IQ data to call it a constellation diagram? Or do I need to collect only samples from IQ data that are in special positions(like the position of the pulses)?

I would say that it is reasonable to plot the IQ data on a scatter plot (x-axis is the in-phase and y-axis is the quadrature) and call it a constellation plot. Unless it is one sample per symbol, it would be good to also include a label to indicate how many samples per symbol the plot is for.


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.