Main Content

comm.CCDF

Complementary cumulative distribution function (CCDF) measurements

Description

The comm.CCDF System object™ obtains the CCDF measurements of an input signal. The CCDF measures the probability that the instantaneous power of the signal is a specified level above its average power.

To obtain the CCDF measurements of an input signal:

  1. Create the comm.CCDF 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?

Creation

Description

ccdf = comm.CCDF creates a CCDF measurement System object.

example

ccdf = comm.CCDF(Name,Value) sets properties using one or more name-value arguments. For example, comm.CCDF('NumPoints',2000) creates a CCDF measurement object with 2000 CCDF points.

Properties

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.

Number of CCDF points, specified as a positive integer. This property and the MaximumPowerLimit property control the size of the histogram bins that the object uses to estimate CCDF curves. The size of the histogram bins determines the resolution of the curves. All input channels have the same number of CCDF points.

Data Types: double

Maximum expected input signal power limit, specified as one of these options.

  • Numeric scalar — All channels in the input signal have the same expected maximum power.

  • Numeric row vector — The ith element of the vector is the maximum expected power for the ith channel in the input signal.

For each input channel, the object obtains the CCDF results by integrating a histogram of instantaneous input signal powers. The object sets the bins of the histogram so that the last bin collects all power occurrences that are equal to or greater than the power specified by this property. The object issues a warning if an input signal exceeds its specified maximum power limit.

This property and the NumPoints property control the size of the histogram bins that the object uses to estimate CCDF curves. The size of the histogram bins determines the resolution of the curves.

To specify the units for this property, use the PowerUnits property.

Data Types: double

Power measurement units, specified as one of these values.

  • 'dBm' or 'dBW' — The object returns relative power values in a dB scale.

  • 'Watts' — The object returns relative power values in a linear scale.

This property determines the power units of the MaximumPowerLimit property.

Data Types: char | string

Option to enable average power measurement output, specified as a logical value 0 (false) or 1 (true). When you set this property to true, the object returns the running average power measurements.

Data Types: logical | double

Option to enable peak power measurement output, specified as a logical value 0 (false) or 1 (true). When you set this property to true, the object returns the running peak power measurements.

Data Types: logical | double

Option to enable peak-to-average power (PAPR) measurement output, specified as a logical value 0 (false) or 1 (true). When you set this property to true, the object returns the running PAPR measurements.

Data Types: logical | double

Usage

Description

[ccdfy,ccdfx] = ccdf(signal) returns the y-axis and x-axis points of the CCDF curve of each channel in input signal.

[ccdfy,ccdfx,avg] = ccdf(signal) returns also the average power measurements of each channel in the input signal. To use this syntax, set the AveragePowerOutputPort property to true.

[ccdfy,ccdfx,peak] = ccdf(signal) returns also the peak power measurements of each channel in the input signal. To use this syntax, set the PeakPowerOutputPort property to true.

[ccdfy,ccdfx,papr] = ccdf(signal) returns the PAPR measurements of each channel in the input signal. To use this syntax, set the PAPROutputPort property to true.

[ccdfy,ccdfx,avg,peak,papr] = ccdf(signal) returns all CCDF measurements. To use this syntax, set the AveragePowerOutputPort, PeakPowerOutputPort, and PAPROutputPort properties to true.

Input Arguments

expand all

Input signal, specified as an M-by-N matrix of complex numbers. M is the number of time samples. N is the number of input channels.

Data Types: double
Complex Number Support: Yes

Output Arguments

expand all

y-axis points of the CCDF curve of each channel, returned as a numeric matrix of the form (NumPoints+1)-by-N, where N is the number of columns in input signal. The ith column of the matrix contains the probability values measured for the channel in the ith column of signal. The probability values are percentages in the range [0, 100].

Data Types: double

x-axis points of the CCDF curve of each channel, returned as a numeric matrix of the form (NumPoints+1)-by-N. N is the number of channels in input signal. The ith column of the matrix contains the instantaneous-to-average power ratios for the channel in the ith column of signal.

Data Types: double

Average power measurement for each channel, returned as a numeric column vector. The ith element corresponds to the average power measurement for the channel in the ith column of the input signal. The object returns this value in the units specified by the PowerUnits property.

Data Types: double

Peak power measurement of each channel, returned as a numeric column vector. The ith element corresponds to the peak power measurement for the channel in the ith column of the input signal. The object returns this value in the units specified by the PowerUnits property.

Data Types: double

PAPR measurement of each channel, returned as a numeric column vector. The ith element corresponds to the PAPR measurement for the channel in the ith column of the input signal. The object returns this value in the units specified by the PowerUnits property.

Data Types: double

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:

release(obj)

expand all

getPercentileRelativePowerRelative power value for given percentile using CCDF
getProbabilityProbability of relative power value using CCDF
plot2-D line plots of CCDF curves
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Generate 16-QAM and QPSK modulated signals.

qamTxSig = qammod(randi([0 15],20e3,1),16,'UnitAveragePower',true);
qpskTxSig = pskmod(randi([0 3],20e3,1),4,pi/4);

Pass the signals through an AWGN channel.

qamRxSig = awgn(qamTxSig,15);
qpskRxSig = awgn(qpskTxSig,15);

Create a CCDF measurement object enabling outputs for the average power measurements and peak power measurements.

ccdf = comm.CCDF(...
    'AveragePowerOutputPort',true, ...
    'PeakPowerOutputPort',true);

Obtain the CCDF measurements of the two waveforms.

[ccdfy,ccdfx,avg,peak] = ccdf([qamRxSig qpskRxSig]);

Plot the CCDF curves for both signals.

plot(ccdf)
legend('16-QAM','QPSK')

Figure contains an axes object. The axes object with title CCDF Measurement contains 2 objects of type line. These objects represent 16-QAM, QPSK.

Extended Capabilities

See Also

Objects

Introduced in R2012a