This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Differential phase shift keying demodulation


z = dpskdemod(y,M)
z = dpskdemod(y,M,phaserot)
z = dpskdemod(y,M,phaserot,symorder)



z = dpskdemod(y,M) demodulates the complex envelope, y, of a DPSK-modulated signal having modulation order M.

z = dpskdemod(y,M,phaserot) specifies the phase rotation of the DPSK modulation.

z = dpskdemod(y,M,phaserot,symorder) also specifies the symbol order.


collapse all

Demodulate DPSK data in a communication channel in which a phase shift is introduced.

Generate a 4-ary data vector and modulate it using DPSK.

M = 4;                          % Alphabet size
dataIn = randi([0 M-1],1000,1); % Random message
txSig = dpskmod(dataIn,M);      % Modulate

Apply the random phase shift resulting from the transmission process.

rxSig = txSig*exp(2i*pi*rand());

Demodulate the received signal.

dataOut = dpskdemod(rxSig,M);

The modulator and demodulator have the same initial condition. However, only the received signal experiences a phase shift. As a result, the first demodulated symbol is likely to be in error. Therefore, you should always discard the first symbol when using DPSK.

Find the number of symbol errors.

errs = symerr(dataIn,dataOut)
errs = 1

One symbol is in error. Repeat the error calculation after discarding the first symbol.

errs = symerr(dataIn(2:end),dataIn(2:end))
errs = 0

Input Arguments

collapse all

DPSK-modulated input signal, specified as a real or complex vector or matrix. If y is a matrix, the function processes the columns independently.

Data Types: double | single
Complex Number Support: Yes

Modulation order, specified as an integer power of two.

Example: 2 | 4 | 16

Data Types: double | single

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 dspkdemod uses a phase rotation of 0 degrees.

Example: pi/4

Data Types: double | single

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 a natural binary-coded ordering.

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

Data Types: char

Output Arguments

collapse all

DPSK-demodulated output signal, returned as a vector or matrix having the same number of columns as input signal y.


The differential algorithm used in this function compares two successive elements of a modulated signal. To determine the first element of vector z, or the first row of matrix z, the function uses an initial phase rotation of 0.

Data Types: double | single

Extended Capabilities

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

Introduced before R2006a