Phase Noise
Apply receiver phase noise to complex baseband signal
Libraries:
Communications Toolbox /
RF Impairments and Components
Description
The Phase Noise block adds phase noise to a complex signal. This block emulates impairments introduced by the local oscillator of a wireless communication transmitter or receiver. The block generates filtered phase noise according to the specified spectral mask and adds it to the input signal. For a description of the phase noise modeling, see Algorithms.
Examples
Ports
Input
In — Input signal
vector  matrix
Input signal, specified as an N_{S}by1 numeric vector or N_{S}byM numeric matrix. N_{S} represents the number of samples and M is the number of channels.
Data Types: double
 single
Complex Number Support: Yes
Output
Out — Output signal
vector  matrix
Output signal, returned as a complexvalued signal with the same data type and size as the input signal.
Parameters
Phase noise level (dBc/Hz) — Phase noise level
[80 100]
(default)  vector of negative scalars
Phase noise level in decibels relative to carrier per hertz (dBc/Hz), specified as a vector of negative scalars. The Phase noise level (dBc/Hz) and Frequency offset (Hz) parameters must have the same length.
Frequency offset (Hz) — Frequency offset
[2000 20000]
(default)  vector of positive increasing values
Frequency offset in Hz, specified as a vector of positive increasing values. The maximum frequency offset value must be less than F_{S} / 2, where F_{S} represents the Sample rate (Hz) parameter value.
The Phase noise level (dBc/Hz) and Frequency offset (Hz) parameters must have the same length.
Sample rate (Hz) — Sample rate
1e6
(default)  positive scalar
Sample rate in Hz, specified as a positive scalar greater than two times the maximum value specified by the Frequency offset (Hz) parameter.
Initial seed — Initial seed of noise generator
2137
(default)  positive scalar
Initial seed of noise generator, specified as a positive scalar.
This block uses the Random Source block to generate noise. The block generates random numbers using the Ziggurat method (V5 RANDN algorithm). Every time you rerun the simulation, the block reuses the same initial seed. That way, the block outputs the same signal each time you run a simulation.
View Filter Response — Display magnitude response of filter
button
Display magnitude response of filter defined by the Phase Noise block. The block uses the FVTool function to display the magnitude response.
Simulate using — Type of simulation to run
Interpreted execution
(default)  Code generation
Type of simulation to run, specified as Interpreted
execution
or Code generation
.
Interpreted execution
— Simulate the model by using the MATLAB^{®} interpreter. This option requires less startup time, but the speed of subsequent simulations is slower than with theCode generation
option. In this mode, you can debug the source code of the block.Code generation
— Simulate the model by using generated C code. The first time you run a simulation, Simulink generates C code for the block. The model reuses the C code for subsequent simulations unless the model changes. This option requires additional startup time, but the speed of the subsequent simulations is faster than with theInterpreted execution
option.
For more information, see Simulation Modes (Simulink).
Block Characteristics
Data Types 

Multidimensional Signals 

VariableSize Signals 

Algorithms
The output signal, y_{k}, is related to input sequence x_{k} by y_{k}=x_{k}e^{jφk}, where φ_{k} is the phase noise. The phase noise is filtered Gaussian noise such that φ_{k}=f(n_{k}), where n_{k} is the noise sequence and f represents a filtering operation.
To model the phase noise, define the power spectrum density (PSD) mask characteristic by specifying scalar or vector values for the frequency offset and phase noise level.
For a scalar frequency offset and phase noise level specification, an IIR digital filter computes the spectrum mask. The spectrum mask has a 1 / f characteristic that passes through the specified point. For more information, see IIR Digital Filter.
For a vector frequency offset and phase noise level specification, an FIR filter computes the spectrum mask. The spectrum mask is interpolated across log10(f). For more information, see FIR Filter.
IIR Digital Filter
For the IIR digital filter, the numerator coefficient is
$$\lambda =\sqrt{2\pi {f}_{offset}{10}^{L/10}}\text{\hspace{0.17em}},$$
where f_{offset} is the frequency offset in Hz and L is the phase noise level in dBc/Hz. The denominator coefficients, γ_{i}, are recursively determined as
$${\gamma}_{i}=\left(i2.5\right)\frac{{\gamma}_{i1}}{i1}\text{\hspace{0.17em}},$$
where γ_{1} = 1, i = {1, 2,...,
N_{t}}, and N_{t} is the number of filter
coefficients. N_{t} is a power of 2 in the range
[2
^{7 },
2
^{19}]. The value of
N_{t} grows as the phase noise offset decreases
towards 0 Hz.
FIR Filter
For the FIR filter, the phase noise level is determined through log10(f) interpolation for frequency offsets over the range [df, f_{s} / 2], where df is the frequency resolution and f_{s} is the sample rate. The phase noise is flat over the range [0, df] in Hz, and from the largest frequency offset to f_{s} / 2. The phase noise has 1 / f^{3} characteristic from df to the smallest frequency offset. The phase noise is linearly interpolated between the smallest and the largest frequency offset. The frequency resolution is equal to (f_{s} / 2)(1 / N_{t}), where N_{t} is the number of coefficients, and is a power of 2 less than or equal to 2
^{16}. If N_{t} < 2^{8}, a time domain FIR filter is used. Otherwise, a frequency domain FIR filter is used.
The algorithm increases N_{t} until these conditions are met:
The frequency resolution is less than the minimum value of the frequency offset vector.
The frequency resolution is less than the minimum difference between two consecutive frequencies in the frequency offset vector.
The maximum number of FIR filter taps is
2
^{16}.
References
[1] Kasdin, N. J., "Discrete Simulation of Colored Noise and Stochastic Processes and 1/(f^alpha); Power Law Noise Generation." The Proceedings of the IEEE. Vol. 83, No. 5, May, 1995, pp 802–827.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced before R2006a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
 América Latina (Español)
 Canada (English)
 United States (English)
Europe
 Belgium (English)
 Denmark (English)
 Deutschland (Deutsch)
 España (Español)
 Finland (English)
 France (Français)
 Ireland (English)
 Italia (Italiano)
 Luxembourg (English)
 Netherlands (English)
 Norway (English)
 Österreich (Deutsch)
 Portugal (English)
 Sweden (English)
 Switzerland
 United Kingdom (English)