Accelerating the pace of engineering and science

# comm.PhaseNoise System object

Package: comm

Apply phase noise to complex, baseband signal

## Description

The PhaseNoise object applies phase noise to a complex, baseband signal. This phase noise has a 1/f spectral characteristic over its entire frequency range.

To apply phase noise to a complex, baseband signal:

1. Define and set up your phase noise object. See Construction.

2. Call step to apply phase noise to a complex, baseband signal according to the properties of comm.PhaseNoise. The behavior of step is specific to each object in the toolbox.

## Construction

H = comm.PhaseNoise creates a phase noise System object™, H. This object applies phase noise with the specified level at the specified frequency offset to a complex, baseband input signal.

H = comm.PhaseNoise(Name,Value) creates a phase noise 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).

H = comm.PhaseNoise(LEVEL,OFFSET,Name,Value) creates a phase noise object, H. This object has the Level property set to LEVEL, the FrequencyOffset property set to OFFSET and the other specified properties set to the specified values.

## Properties

 Level Phase noise level Specify the phase noise level in decibels relative to carrier per Hertz (dBc/Hz) at a frequency offset specified by the FrequencyOffset property. The default is [-60 -80]. This property requires a negative, real scalar or vector of data type double. FrequencyOffset Frequency offset Specify the frequency offset in Hertz as a nonnegative, real scalar or increasing vector of data type double. The default is [20 200]. SampleRate Sample rate Specify the sample rate in Hertz as a positive, real scalar or vector of data type double. The default is 1024. The System object does not use this property when you specify Level and FrequencyOffset as scalars.

## Methods

 clone Create phase noise 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 step Apply phase noise to a complex, baseband signal

## Examples

Add a phase noise vector and frequency offset vector to a 16-QAM signal. Then, plot the signal.

```% Create 16-QAM modulator
hMod = comm.RectangularQAMModulator(16, ...
'NormalizationMethod','Average power', 'AveragePower',10);
% Create phase noise System object
hPhNoise = comm.PhaseNoise('Level',[-60 -80], ...
'FrequencyOffset',[20 200], ...
'SampleRate',1024);
% Generate modulated symbols
modData = step(hMod, randi([0 15], 1000, 1));
% Apply phase noise and plot the result
y = step(hPhNoise, modData);
scatterplot(y)```

## Algorithms

This object implements the algorithm, inputs, and outputs described on the Phase Noise block reference page. The object properties correspond to the block parameters, except:

• The object respects the data types and does perform any casting other than casting the output to the input data type. The result of exp(1i$×$phase_noise) is cast to the input data type first, before multiplying with the input signal. This order prevents the output (phase distorted) signal from being downcast to single precision if any of the properties are of data type single while the input data type is double precision.

• This object uses the MATLAB® default random stream to generate random numbers. The block uses a random number generator based on the V5 RANDN (Ziggurat) algorithm. In addition, the block uses an initial seed, set with the Initial seed parameter to initialize the random number generator. Every time the system that contains the block runs, the block generates the same sequence of random numbers. To generate reproducible numbers using this object, reset the MATLAB default random stream using the following code.

`reset(RandStream.getGlobalStream)`