phased.Receiver Noise Figure and SNR ratio

조회 수: 11 (최근 30일)
Fabio Leoli
Fabio Leoli 2024년 4월 8일
댓글: Fabio Leoli 2024년 4월 19일
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?

채택된 답변

Arun
Arun 2024년 4월 19일
편집: Arun 2024년 4월 19일
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
Fabio Leoli
Fabio Leoli 2024년 4월 19일
Hello, Arun.
Thank you very much for the answer, the concept is much more clear for me now.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Transmitters and Receivers에 대해 자세히 알아보기

제품


릴리스

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by