Main Content


Differential phase shift keying modulation



y = dpskmod(x,M) modulates the input signal using differential phase shift keying (DPSK) with modulation order M.

y = dpskmod(x,M,phaserot) specifies the phase rotation of the DPSK modulation.

y = dpskmod(x,M,phaserot,symorder) also specifies the symbol order.


collapse all

Plot the output of the dspkmod function to view the possible transitions between DPSK symbols.

Set the modulation order to 4 to model DQPSK modulation.

M = 4;

Generate a sequence of 4-ary random symbols.

x = randi([0 M-1],500,1);

Apply DQPSK modulation to the input symbols.

y = dpskmod(x,M,pi/8);

Specify a constellation diagram object to display a signal trajectory diagram and without displaying the corresponding reference constellation. Display the trajectory.

cd = comm.ConstellationDiagram( ...
    ShowTrajectory=true, ...

Input Arguments

collapse all

Input signal, specified as a vector or matrix of positive integers. The elements of x must have values in the range of [0, M – 1].

Data Types: double

Modulation order, specified as an integer power of two.

Example: 2 | 4 | 16

Data Types: double

Phase rotation of the DPSK modulation, specified in radians as a real scalar. The total phase shift per symbol is the sum of phaserot and the phase generated by the differential modulation.

If you specify phaserot as empty, then dpskmod uses a phase rotation of 0 degrees.

Example: pi/4

Data Types: double

Symbol order, specified as 'bin' or 'gray'. This argument specifies how the function assigns binary vectors to corresponding integers.

  • If symorder is 'bin', the function uses binary-coded ordering.

  • If symorder is 'gray', the function uses a Gray-coded ordering.

Data Types: char

Output Arguments

collapse all

Complex baseband representation of a DPSK-modulated output signal, returned as vector or matrix of complex values. The columns represent independent channels.


An initial phase rotation of 0 is used in determining the first element of the output y (or the first row of y if it is a matrix with multiple rows), because two successive elements are required for a differential algorithm.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced before R2006a