phased.Receiver Noise Figure and SNR ratio

16 vues (au cours des 30 derniers jours)
Fabio Leoli
Fabio Leoli le 8 Avr 2024
Commenté : Fabio Leoli le 19 Avr 2024
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?

Réponse acceptée

Arun
Arun le 19 Avr 2024
Modifié(e) : Arun le 19 Avr 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:
  • 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.
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
snrReduction = 19.8116
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.
  1 commentaire
Fabio Leoli
Fabio Leoli le 19 Avr 2024
Hello, Arun.
Thank you very much for the answer, the concept is much more clear for me now.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Visualize and Interpret Parallel Link Project Analysis Results dans Help Center et File Exchange

Produits


Version

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by