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.

Creation

Syntax

``ccdf = comm.CCDF``
``ccdf = comm.CCDF(Name,Value)``

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.

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

Syntax

``[ccdfy,ccdfx] = ccdf(signal)``
``[ccdfy,ccdfx,avg] = ccdf(signal)``
``[ccdfy,ccdfx,peak] = ccdf(signal)``
``[ccdfy,ccdfx,papr] = ccdf(signal)``
``[ccdfy,ccdfx,avg,peak,papr] = ccdf(signal)``

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

 `getPercentileRelativePower` Relative power value for given percentile using CCDF `getProbability` Probability of relative power value using CCDF `plot` 2-D line plots of CCDF curves
 `step` Run System object algorithm `release` Release resources and allow changes to System object property values and input characteristics `reset` Reset 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')```

Version History

Introduced in R2012a