# comm.ACPR System object

Package: comm

## Description

The `ACPR` System object™ measures adjacent channel power ratio (ACPR) of an input signal.

1. Define and set up your adjacent channel power object. See Construction.

2. Call `step` to measure the adjacent channel power ratio according to the properties of `comm.ACPR`. The behavior of `step` is specific to each object in the toolbox.

## Construction

`H = comm.ACPR` creates a System object, `H`, that measures adjacent channel power ratio (ACPR) of an input signal.

`H = comm.ACPR(Name,Value)` creates object, `H`, with each specified property set to the specified value. You can specify additional name-value pair arguments in any order as (`Name1`,`Value1`,...,`NameN`,`ValueN`).

## Properties

 `NormalizedFrequency` Assume normalized frequency values Specify whether the frequency values are normalized. If you set this property to `true`, the object assumes that frequency values are normalized (in the [-1 1] range). The default is `false`. If you set this property to `false`, the object assumes that frequency values are measured in Hertz. `SampleRate` Sample rate of input signal Specify the sample rate of the input signal, in samples per second, as a double-precision, positive scalar. The default is `1e6` samples per second. This property applies when you set the `NormalizedFrequency` property to `false`. `MainChannelFrequency` Main channel center frequency Specify the main channel center frequency as a double-precision scalar. The default is `0` Hz. When you set the `NormalizedFrequency` property to `true`, you must specify the center frequency as a normalized value between `-1` and `1`. When you set the `NormalizedFrequency` property to `false`, you must specify the center frequency in Hertz. The object measures the main channel power in the bandwidth that you specify in the `MainMeasurementBandwidth` property. This measurement is taken at the center of the frequency that you specify in the `MainMeasurementBandwidth` property. `MainMeasurementBandwidth` Main channel measurement bandwidth Specify the main channel measurement bandwidth as a double-precision, positive scalar. The default is `50e3` Hz. When you set the `NormalizedFrequency` property to `true`, you must specify the measurement bandwidth as a normalized value between `0` and `1`. When you set the `NormalizedFrequency` property to `false`, you must specify the measurement bandwidth in Hertz. The object measures the main channel power in the bandwidth that you specify in the `MainMeasurementBandwidth` property. This measurement is taken at the center of the frequency that you specify in the `MainChannelFrequency` property. `AdjacentChannelOffset` Adjacent channel frequency offsets Specify the adjacent channel offsets as a double-precision scalar or as a row vector comprising frequencies that define the location of adjacent channels of interest. The default is ```[-100e3 100e3]``` Hz. When you set the `NormalizedFrequency` property to `true`, you must specify normalized frequency offset values between `-1` and `1`. When you set the `NormalizedFrequency` property to `false`, you must specify frequency offset values in Hertz. The offset values indicate the distance between the main channel center frequency and adjacent channel center frequencies. Positive offsets indicate adjacent channels to the right of the main channel center frequency. Negative offsets indicate adjacent channels to the left of the main channel center frequency. `AdjacentMeasurementBandwidth` Adjacent channel measurement bandwidths Specify the measurement bandwidth for each adjacent channel. The default is the scalar, `50e3`. The object assumes that each adjacent bandwidth is centered at the frequency defined by the corresponding frequency offset. You define this offset in the `AdjacentChannelOffset` property. Set this property to a double-precision scalar or row vector of length equal to the number of specified offsets in the `AdjacentChannelOffset` property. When you set this property to a scalar, the object obtains all adjacent channel power measurements within equal measurement bandwidths. When you set the `NormalizedFrequency` property to `true`, you must specify normalized bandwidth values between `0` and `1`. When you set the `NormalizedFrequency` property to `false`, you must specify the adjacent channel bandwidth values in Hertz. `MeasurementFilterSource` Source of the measurement filter Specify the measurement filter source as one of `None` | `Property`. The default is `None`. When you set this property to `None` the object does not apply filtering to obtain ACPR measurements. When you set this property to `Property`, the object applies a measurement filter to the main channel before measuring the average power. Each of the adjacent channel bands also receives a measurement filter . In this case, you specify the measurement filter coefficients in the `MeasurementFilter` property. `MeasurementFilter` Measurement filter coefficients Specify the measurement filter coefficients as a double-precision row vector containing the coefficients of an FIR filter in descending order of powers of z. Center the response of the filter at DC. The ACPR object automatically shifts and applies the filter response at each of the main and adjacent channel center frequencies before obtaining the average power measurements. The internal filter states persist and clear only when you call the reset method. This property applies when you set the `MeasurementFilter` property to `Property`. The default is `1`, which is an all-pass filter that has no effect on the measurements. `SpectralEstimation` Spectral estimation control Specify the spectral estimation control as one of `Auto` | ```Specify frequency resolution``` | `Specify window parameters`. The default is `Auto`. When you set this property to `Auto`, the object obtains power measurements with a Welch spectral estimator with zero-percent overlap, a Hamming window, and a segment length equal to the length of the input data vector. In this setting, the spectral estimator set should achieve the maximum frequency resolution attainable with the input data length. When you set this property to `Specify frequency resolution`, you specify the desired spectral frequency resolution, in normalized units or in Hertz, using the `FrequencyResolution` property. In this setting, the object uses the value in the `FrequencyResolution` property to automatically compute the size of the spectral estimator data window. When you set this property to `Specify window parameters`, several spectral estimator properties become available so that you can control the Welch spectral estimation settings. These properties are: `SegmentLength`, `OverlapPercentage`, `Window`, and `SidelobeAttenuation`. Sidelobe attenuation applies only when you set the `Window` property to `Chebyshev`. When you set the this property to `Specify window parameters`, the `FrequencyResolution` property does not apply, and you control the resolution using the above properties. `SegmentLength` Segment length Specify the segment length, in samples, for the spectral estimator as a numeric, positive, integer scalar. The default is `64`. The length of the segment allows you to make tradeoffs between frequency resolution and variance in the spectral estimates. A long segment length results in better resolution. A short segment length results in more averaging and a decrease in variance. This property applies when you set the `SpectralEstimation` property to `Specify window parameters`. `OverlapPercentage` Overlap percentage Specify the percentage of overlap between each segment in the spectral estimator as a double-precision scalar in the ```[0 100]``` interval. This property applies when you set the `SpectralEstimation` property to `Specify window parameters`. The default is `0` percent. `Window` Window function Specify a window function for the spectral estimator as one of `Bartlett` | `Bartlett-Hanning` | `Blackman` | `Blackman-Harris` | `Bohman` | `Chebyshev` | ```Flat Top``` | `Hamming` | `Hann` | `Nuttall` | `Parzen` | `Rectangular` | `Triangular`. The default is `Hamming`. A Hamming window has `42.5`dB of sidelobe attenuation. This attenuation may mask spectral content below this value, relative to the peak spectral content. Choosing different windows allows you to make tradeoffs between resolution and sidelobe attenuation. This property applies when you set the `SpectralEstimation` property to `Specify window parameters`. `SidelobeAttenuation` Sidelobe attenuation for Chebyshev window Specify the sidelobe attenuation, in decibels, for the Chebyshev window function as a double-precision, nonnegative scalar. The default is `100` dB. This property applies when you set the `SpectralEstimation` property to `Specify window parameters` and the `Window` property to `Chebyshev`. `FrequencyResolution` Frequency resolution Specify the frequency resolution of the spectral estimator as a double-precision scalar. The default is `10625` Hz. When you set the NormalizedFrequency property to `true`, you must specify the frequency resolution as a normalized value between `0` and `1`. When you set the `NormalizedFrequency` property to `false`, you must specify the frequency resolution in Hertz. The object uses the value in the `FrequencyResolution` property to calculate the size of the data window used by the spectral estimator. This property applies when you set the `SpectralEstimation` property to `Specify frequency resolution`. `FFTLength` FFT length Specify the FFT length that the Welch spectral estimator uses as one of `Next power of 2` | ```Same as segment length``` | `Custom`. The default is ```Next power of 2```. When you set this property to `Custom`, the `CustomFFTLength` property becomes available to specify the desired FFT length. When you set this property to `Next power of 2`, the object sets the length of the FFT to the next power of 2. This length is greater than the spectral estimator segment length or `256`, whichever is greater. When you set this property to `Same as segment length`, the object sets the length of the FFT. This length equals the spectral estimator segment length or `256`, whichever is greater. `CustomFFTLength` Custom FFT length Specify the number of FFT points that the spectral estimator uses as a numeric, positive, integer scalar. This property applies when you set the `FFTLength` property to `Custom`. The default is `256`. `MaxHold` Max-hold setting control Specify the maximum hold setting. The default is `false`. When you set this property to `true`, the object compares two vectors. One vector compared is the current estimated power spectral density vector (obtained with the current input data frame). The object checks this vector against the previous maximum-hold accumulated power spectral density vector, (obtained at the previous call to the `step` method). The object stores the maximum values at each frequency bin and uses them to compute average power measurements. You clear the maximum-hold spectrum by calling the `reset` method on the object. When you set this property to `false`, the object obtains power measurements using instantaneous power spectral density estimates. This property is tunable. `PowerUnits` Power units Specify power measurement units as one of `dBm` | `dBW` | `Watts`. The default is `dBm`. When you set this property to `dBm`, or `dBW`, the `step` method outputs ACPR measurements in a dBc scale (adjacent channel power referenced to main channels power). If you set this property to `Watts`, the `step` method outputs ACPR measurements in a linear scale. `MainChannelPowerOutputPort` Enable main channel power measurement output When you set this property to `true`, the `step` method outputs the main channel power measurement. The default is `false`. The main channel power is the power of the input signal measured in the band that you define with the `MainChannelFrequency` and `MainMeasurementBandwidth` properties. The `step` method returns power measurements in the units that you specify in the `PowerUnits` property. `AdjacentChannelPowerOutputPort` Enable adjacent channel power measurements output When you set this property to `true`, the `step` method outputs a vector of adjacent channel power measurements. The default is `false`. The adjacent channel powers correspond to the input signal's power measured in the bands that you define with the `AdjacentChannelOffset` and `AdjacentMeasurementBandwidth` properties. The `step` method returns power measurements in the units that you specify in the `PowerUnits` property.

## Methods

 clone Create ACPR measurement object with same property values getNumInputs Number of expected inputs to step method getNumOutputs Number of outputs from step method isLocked Locked status for input attributes and nontunable properties release Allow property value and input characteristics changes reset Reset states of ACPR measurement object step Adjacent Channel Power Ratio measurements

## Examples

collapse all

### Measure ACPR of a 16-QAM signal with symbol rate of 3.84 Msps

```% Generate data with an alphabet size of 16 and modulate the data x = randi([0 16-1],5000,1); hMod = comm.RectangularQAMModulator(16); y = step(hMod,x); % Usample the data by L = 8 using a rectangular pulse shape L = 8; yPulse = rectpulse(y,L); % Create an ACPR measurement object and measure the modulated signal h = comm.ACPR(... 'SampleRate', 3.84e6*8,... 'MainChannelFrequency', 0,... 'MainMeasurementBandwidth', 3.84e6,... 'AdjacentChannelOffset', [-5e6 5e6],... 'AdjacentMeasurementBandwidth', 3.84e6,... 'MainChannelPowerOutputPort', true,... 'AdjacentChannelPowerOutputPort', true); [ACPR,mainChnlPwr,adjChnlPwr] = step(h,yPulse) ```
```ACPR = -14.3659 -14.3681 mainChnlPwr = 38.8668 adjChnlPwr = 24.5010 24.4988 ```

## Algorithms

 Note:   The following conditions must be true, otherwise power measurements fall out of the Nyquist interval.$\begin{array}{l}|MainChannelFreq±\text{​}\text{\hspace{0.17em}}\frac{MainChannelMeasBW}{2}|Fmax = Fs/2 if NormalizedFrequency = falseFmax = 1 if NormalizedFrequency = true