Main Content


Demodulate using DBPSK method


The comm.DBPSKDemodulator System object™ demodulates a signal that was modulated using the differential binary phase shift keying (DBPSK) method. The input is the baseband representation of the modulated signal.

To demodulate a DBPSK-modulated signal:

  1. Create the comm.DBPSKDemodulator object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?



dbpskdemod = comm.DBPSKDemodulator creates a DBPSK demodulator System object, dbpskdemod. This object demodulates the input signal using the DBPSK method.


dbpskdemod = comm.DBPSKDemodulator(phase) additionally sets the PhaseRotation property to phase.

dbpskdemod = comm.DBPSKDemodulator(___,Name=Value) creates a DBPSK demodulator object using any of the previous syntaxes and sets properties using one or more name-value arguments. For example, OutputDataType="double" sets the data type of output to "double".


expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Additional phase shift in radians, specified as a scalar. This value corresponds to the phase difference between previous and current modulated bits when the input is zero.

Data Types: double

Output data type, specified as "Full precision", "Smallest unsigned integer", "double", "single", "int8", "uint8", "int16", "uint16", "int32", "uint32", or "logical". When you set this property to "Full precision", the output data type has the same data type as the input.




Y = dbpskdemod(X) applies DBPSK demodulation to the DBPSK-modulated waveform and returns the demodulated input signal.

Input Arguments

expand all

Input data, specified as a scalar or column vector.

Data Types: single | double
Complex Number Support: Yes

Output Arguments

expand all

Output data, returned as a scalar or column vector. Y is of the same length as X. The data type of the output data depends on the OutputDataType property.

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:


expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object


collapse all

Create a DBPSK modulator and demodulator pair.

dbpskmod = comm.DBPSKModulator(pi/4);
dbpskdemod = comm.DBPSKDemodulator(pi/4);

Create an error rate calculator. Set the ComputationDelay property to 1 to account for the one bit transient caused by the differential modulation.

errorRate = comm.ErrorRate('ComputationDelay',1);

Process the signal. The process includes these steps:

  1. Generate 50-bit frames.

  2. DBPSK-modulate the signal.

  3. Pass the modulated signal through an AWGN channel.

  4. DBPSK-demodulate the noisy signal.

  5. Collect error statistics.

for counter = 1:100
    txData = randi([0 1],50,1);
    modSig = dbpskmod(txData);
    rxSig = awgn(modSig,7);
    rxData = dbpskdemod(rxSig);
    errorStats = errorRate(txData,rxData);

Display the error statistics.

ber = errorStats(1)
ber = 0.0034
numErrors = errorStats(2)
numErrors = 17
numBits = errorStats(3)
numBits = 4999


The DBPSK demodulator compares the current symbol to the previous symbol. It maps phase differences of θ and π+θ to outputs of 0 and 1, respectively, where θ is the PhaseRotation parameter.

Extended Capabilities

Version History

Introduced in R2012a