- The SNR of the input signal will only be reduced by the specified noise figure if the input signal has the amount of noise specified by the reference temperature.
- In your example, the input signal has much more noise than would be suggested by the reference temperature. So the amount of noise added by the receiver is small in comparison to the noise in the input signal.
phased.Receiver Noise Figure and SNR ratio
5 views (last 30 days)
Show older comments
I'm trying to verify the definition of the Noise factor (or Noise figure, if in db) , i.e.
at the input and output of a receiver modelled as a phased.Receiver matlab system object.
rng(1, "twister"); % for repeatability
fs = 100e6;
f = 100e3;
time_array = 0:1/fs:1/f;
waveform = sin(2*pi*f*time_array);
SNR_i = 30; %dB
input = awgn(waveform, SNR_i, 'measured');
noise_input = input - waveform;
SNR_i = snr(waveform, noise_input); % So far, so good
gain = 30; %dB
noiseFigure = 20;
refTemp = 290;
rec = phased.Receiver('Gain', gain, ...
'NoiseMethod', 'Noise figure', ...
'NoiseFigure', noiseFigure, ...
'ReferenceTemperature', refTemp, ...
'SampleRate', fs);
output = rec(input);
amplifiedSignalNoNoise = waveform*db2mag(gain);
plot(time_array, real(output)); hold on
plot(time_array, amplifiedSignalNoNoise, 'LineWidth', 2); hold off
noise_output = output - amplifiedSignalNoNoise;
SNR_o = snr(amplifiedSignalNoNoise, noise_output);
Unfortunately, I don't find the 20 dB of Noise Figure when doing SNR_i - SNR_o. Same problem arrives if I use phased.Transmitter or phased.ReceiverPreamp. What am I missing?
0 Comments
Accepted Answer
Arun
on 19 Apr 2024
Edited: Arun
on 19 Apr 2024
Hi Fabio,
I understand that you are seeking an explanation as to why the difference between ‘SNR_i‘ and ‘SNR_o’, as observed in the created scenario, is not equal to ‘Noise Figure’.
The difference of ‘SNR_i’ and ‘SNR_o’ is not equal to ‘Noise Figure’ because of the following reasons:
If the noise added is more or less than the reference temperature specified by the receiver to input, the SNR change will not be equal to the noise figure, because the receiver will be adding proportionally more or less noise.
Another perspective is that the receiver always adds the same amount of noise to a signal regardless of how much noise is present in the input.
You can add noise to a signal by specifying the noise temperature in MATLAB using “comm.ThermalNoise” function. Refer to the modified version of the code below, which gives expected result:
rng(1, "twister"); % for repeatability
fs = 100e6;
f = 100e3;
time_array = 0:1/fs:1/f;
waveform = complex(sin(2*pi*f*time_array)');
% Get input waveform with noise using comm thermal noise
refTemp = 290;
noise = comm.ThermalNoise(NoiseTemperature=refTemp,SampleRate=fs);
input = noise(waveform);
noise_in = input-waveform;
SNR_i = snr(input,noise_in);
gain = 30; %dB
noiseFigure = 20;
rec = phased.Receiver('Gain', gain, ...
'NoiseMethod', 'Noise figure', ...
'NoiseFigure', noiseFigure, ...
'ReferenceTemperature', refTemp, ...
'SampleRate', fs);
output = rec(input);
amplifiedSignalNoNoise = waveform*db2mag(gain);
noise_output = output - amplifiedSignalNoNoise;
SNR_o = snr(output, noise_output);
snrReduction = SNR_i - SNR_o
Please refer the shared documentation link for more information on “comm.ThermalNoise” function: https://www.mathworks.com/help/comm/ref/comm.thermalnoise-system-object.html
I hope this helps in understanding the cause for the issue.
More Answers (0)
See Also
Categories
Find more on Transmitters and Receivers in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!