Communications Toolbox    

Representing Signal Constellations

The QASK method depends on a choice of a signal constellation. The QASK mapping and demapping functions in this toolbox can process two special types of signal constellations, as well as a general type of constellation that you can define as you choose. The special types are called square and circle constellations and the general type is called an arbitrary constellation. This section describes how you can tell MATLAB what signal constellation you want to use, and how you can plot signal constellations.

Square Constellations

To use a square constellation, you only need to tell MATLAB the number of points in the constellation. This number, M, must be a power of two. For example, to map the digital signal [3 8 15 30 28] to a square constellation having 32 points, use the qaskenco function as below.

The returned vectors inphase and quadr give the in-phase and quadrature components, respectively, of the mapped signal. The command

demaps to recover the original message [3 8 15 30 28]. Notice that in both cases, the square constellation is described only by the number 32.

The modulation and demodulation functions use the M-ary number and the method string 'qask' to specify the square constellation. The command below implements QASK modulation on the message [3 8 15 30 28], using a 32-point square constellation. The command assumes that the sampling rates are 1 Hz before modulating and 2 Hz after modulating.

Plotting Square Constellations.   To plot a square constellation with M points, use one of these commands:

Circle Constellations

To use a circle constellation having equally spaced points on each circle, you need to give MATLAB this information, in this order:

  1. The number of points on each circle
  2. The radius of each circle
  3. The phase of one point on each circle

The three types of information occupy three vectors of the same length. The first entries of the three vectors determine one circle, the second entries of the three vectors determine another circle, and so on.

For example, the apkconst command below returns the complex coordinates of the points on a circle constellation that contains sixteen points on each of two circles. The inner circle has radius one, and one of the constellation points has zero phase. The outer circle has radius three and a constellation point at 10 degrees.

The constellation contains two circles because each vector has length two. The constellation has 32 points in total because the sum of entries in the first vector is 32.

The modulation and demodulation functions use three equal-length vectors and the method string 'qask/cir' to specify the circle constellation. The command below implements QASK modulation on the message [3 8 15 30 28], using the circle constellation described above.

Default Values.   If you do not provide the phase vector, then by default one constellation point on each circle will have zero phase. If you provide neither the phase vector nor the radius vector, then by default the kth circle will have radius k, and one of the constellation points will have zero phase. You must provide the vector that specifies how many points are on each circle.

Plotting Circle Constellations.   To plot a circle constellation in which numsig gives the number of points on each circle, amp gives the radius of each circle, and phs gives the phase of one point on each circle, use one of these commands:

To label the constellation points by number, use this syntax instead:

Arbitrary Constellations

You can also use a signal constellation that does not fit into the categories above. To do this, you need to specify two real vectors of equal length, one that contains the in-phase components of the constellation point and one that contains the corresponding quadrature components. You also need to use the method string 'qask/arb' in the modulation, demodulation, mapping, and demapping functions.

For example, the code examples below plot signal constellations that have a hexagonal and triangular structure, respectively. They use the modmap function.

The figure below shows plots of the hexagonal and triangular signal constellations on the left and right, respectively. The dashed lines are not part of the MATLAB output, and appear below only to suggest the hexagonal and triangular structures.

The modulation and demodulation functions also use the method string 'qask/arb' and a pair of equal-length vectors like inphase and quadr to determine your constellation. For example, to modulate the message [3 8 5 10 7] using the QASK method with one of the constellations described in the examples above, supplement the example code with this command:


  Significance of Sampling Rates Simple Digital Modulation Example