Receiver Thermal Noise
Apply receiver thermal noise to complex signal
Libraries:
Communications Toolbox /
RF Impairments and Components
Description
The Receiver Thermal Noise block applies receiver thermal noise to a complex signal. The block simulates the effects of thermal noise on a complex signal. The Specification method parameter enables specification of the thermal noise based on the noise temperature, noise figure, or noise factor.
Examples
Apply Receiver Thermal Noise to QAM Modulated Signal
The cm_receiver_thermal_noise_qam
model applies receiver thermal noise to a 16-QAM signal, and displays the signal in a constellation diagram. The model applies receiver thermal noise by specifying the noise figure in the Receiver Thermal Noise block.
Run the simulation at a sample rate of 1 kHz by setting the sample time to 1e-3 samples per second in the Random Integer Generator block. The Rectangular QAM Modulator Baseband block has the normalization method set to average power and the average power level set to 3e-13 watts (-92.5 dBm). Set the noise figure level in the Receiver Thermal Noise block to 20 dB, and display the constellation diagram of the 16-QAM signal.
Decreasing the noise figure will reduce the simulated receive noise level, and result in a tighter clustering of samples for the individual points in the constellation diagram. To demonstrate this, set the noise figure level to 10 dB and show the constellation diagram of the 16-QAM signal.
Add RF Impairments to DQPSK Signal
This example applies RF impairments to a signal modulated by the differential quadrature phase shift keying (DQPSK) method. To show the RF impairments, the example applies exaggerated levels that are not typical levels for modern radios.
In this example, the slex_rcvrimpairments_dqpsk
model DQPSK-modulates a random signal and applies various RF impairments to the signal. The model uses impairment blocks from the RF Impairments library. The InitFun
callback function initializes simulation variables. For more information, see Model Callbacks (Simulink).
After the impairment blocks, the signal forks into two paths. One path applies DC blocking, automatic gain control (AGC), and I/Q imbalance compensation to the signal before demodulation. The signal on the correction path is adjusted by the DC Blocker, AGC, and I/Q Imbalance Compensator blocks. Because the signal is DQPSK modulated, no carrier synchronization is required. The second path goes directly to demodulation. After demodulation, an error rate calculation is performed on both signals. The model includes Constellation Diagram blocks after modulation, before correction, and after correction so that you can analyze the constellation.
When the model runs, constellation diagrams plot the signal at these stages in the simulation:
The
After Modulation
constellation diagram shows the reference DQPSK-modulated signal constellation.The
Before Correction
constellation diagram shows the attenuated and distorted signal constellation.The
After Correction
constellation diagram shows the signal has been amplified and improved after the correction blocks.
The error rate for the demodulated signal without AGC is primarily caused by free space path loss and I/Q imbalance. The QPSK modulation minimizes the effects of the other impairments.
Error rate for corrected signal: 0.000 Error rate for uncorrected signal: 0.042
To explore the model try:
Adjusting RF impairment settings, rerun the model, and notice the changes to the constellation diagrams and error rates.
Modifying the model to add an equalizer stage before the demodulation. Equalization has inherent ability to reduce some of the distortion caused by impairments. For more information, see Equalization.
Apply Thermal Noise To Multichannel Signal in Simulink
Apply thermal noise to a multichannel signal and compute the variance of each channel. Confirm the Receiver Thermal Noise block applies equivalent thermal noise to the individual channels by comparing the variances are approximately equal for each channel. The Receiver Thermal Noise block applies to confirm has the same noise floor by computing the variance of each channel.
The multichan_thermal_noise.slx
model creates a multichannel signal with equal power per channel, and then applies receiver thermal noise to the multichannel signal.
Run the model to output the computed variance for each channel.
Ch1 Ch2 Ch3 Variance: 10.347 10.015 9.905
Extended Examples
Ports
Input
In1 — Baseband signal
scalar | column vector | matrix
Baseband signal, specified as a complex-valued scalar, NS-element column vector, or NS-by-NC matrix. NS is the number of samples and NC is the number of channels.
Data Types: double
| single
Complex Number Support: Yes
Output
Out1 — Output signal
scalar | column vector | matrix
Output signal, returned as a scalar, column vector, or matrix of complex values with the same length and data type as the input signal.
Parameters
To edit block parameters interactively, use the Property Inspector. From the Simulink® Toolstrip, on the Simulation tab, in the Prepare gallery, select Property Inspector.
Specification method — Thermal noise specification method
Noise temperature
(default) | Noise figure
| Noise factor
Thermal noise specification method, specified as one of these options.
Noise temperature
specifies the noise in kelvins.Noise figure
specifies the added receiver noise in dB relative to an input noise temperature of 290 K. The noise figure is the decibel equivalent of the noise factor.Noise factor
specifies the added receiver noise relative to an input noise temperature of 290 K. The noise factor is the linear equivalent of the noise figure.
Noise temperature (K) — Noise temperature
290
(default) | scalar
Noise temperature in kelvins, specified as a scalar.
Tunable: Yes
Dependencies
This parameter applies when you set Specification method to Noise
temperature
.
Data Types: double
| single
Noise figure (dB) — Receiver noise figure
3.0103
(default) | scalar
Receiver noise figure in dB relative to a noise temperature of 290 K, specified as a scalar.
Note
This parameter specifies the noise contribution of the receiver circuitry only. To add the effects of antenna noise, select Add 290K antenna noise.
Tunable: Yes
Dependencies
This parameter applies when you set Specification method to Noise
figure
.
Data Types: double
| single
Noise factor — Receiver noise factor
2
(default) | scalar
Receiver noise factor relative to a noise temperature of 290 K, specified as a scalar.
Note
This parameter specifies the noise contribution of the receiver circuitry only. To add the effects of antenna noise, select Add 290K antenna noise.
Tunable: Yes
Dependencies
This parameter applies when you set Specification method to Noise
factor
.
Data Types: double
| single
Add 290K antenna noise — Option to add 290 K antenna noise
off
(default) | on
Select this parameter to add 290 K antenna noise to the signal.
Dependencies
This parameter applies when you set Specification method to Noise
factor
or Noise
figure
.
Reference load (ohm) — Reference load
1
(default) | scalar
Reference load value in ohms, specified as a scalar. This value is used to compute the voltage levels based on the signal and noise power levels.
Tunable: Yes
Data Types: double
| single
Random number source — Source for random number stream
Global stream
(default) | mt19937ar with seed
Source for random number stream, specified as Global
stream
or mt19937ar with
seed
.
Limitations
To use this block in a For Each Subsystem (Simulink) you
must set this parameter to Global Stream
.
This ensures that each run will generate independent noise
samples.
Initial seed — Initial seed value
67987
(default) | scalar
Initial seed value for the random number generator, specified as a scalar.
Dependencies
This parameter applies when you set Random
number source to mt19937ar with
seed
.
Data Types: double
| single
Simulate using — Type of simulation to run
Code generation
(default) | Interpreted execution
Type of simulation to run, specified as Code generation
or
Interpreted execution
.
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.Interpreted execution
— Simulate the model by using the MATLAB® interpreter. This option shortens 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.
For more information, see Simulation Modes (Simulink).
Block Characteristics
Data Types |
|
Multidimensional Signals |
|
Variable-Size Signals |
|
Algorithms
Wireless receiver performance is often expressed as a noise factor or figure. The noise factor, F, is defined as the ratio of the input signal-to-noise ratio, Si/Ni to the output signal-to-noise ratio, So/No, such that
Given the receiver gain G and receiver noise power Nckt, the noise factor can be expressed as
The IEEE® defines the noise factor assuming that noise temperature at the input is T0, where T0 = 290 K. The noise factor is then
k is Boltzmann's constant. B is the signal bandwidth. Tckt is the equivalent input noise temperature of the receiver and is expressed as
The overall noise temperature of an antenna and receiver Tsys is
where Tant is the antenna noise temperature.
The noise figure NF is the dB equivalent of the noise factor and can be expressed as
The noise power can be expressed as
where V is the noise voltage expressed as
and R is the reference load.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced before R2006aR2023b: Multichannel input support
The Receiver Thermal Noise
System object™ accepts a matrix input baseband signal. Each column of the matrix
represents a baseband signal from one channel of a multi-antenna system.
R2023b: Variable-size support
This support enables you to vary the length of input signal each time the block executes in your simulation.
R2023b: Random number generator update
The Receiver Thermal Noise block updates the random number generator (RNG)
source. You can now use the Random number
source parameter to select Global stream
or
mt19937ar with seed
as the RNG source. To use this block in a
For Each Subsystem (Simulink) you must set
Random number source to Global
Stream
. This ensures that each run will generate independent noise
samples.
For simulations created before R2023b, the block defaults to legacy mode. In legacy mode, the block uses the Random Source block to generate noise and random numbers are generated using the Ziggurat method (V5 RANDN algorithm). The block reuses the same initial seeds every time you rerun the simulation, so that this block outputs the same signal each time you run a simulation.
To improve statistics when running simulations with pre-R2023b models that use the Receiver Thermal Noise block, run Update Model and convert the pre-R2023b model to use new the Receiver Thermal Noise block capability.
R2023b: Code Generation
Code generation is enabled by default. For more information, see Simulate using.
R2023b: Single data type support
If the input signal is of type single, then the block natively computes in single precision, and the returned output is also of type single.
See Also
Blocks
- I/Q Imbalance | Free Space Path Loss | Memoryless Nonlinearity | Phase Noise | Phase/Frequency Offset
Objects
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
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)