add white gaussian noise
9 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I tried to add noise to a signal. The signal noise ratio must be 0 dB. I tried with
signal_noise=awgn(signal,0,'measured')
Is there any method?
0 Commenti
Risposte (2)
Meg Noah
il 7 Ago 2025 alle 17:14
Modificato: Meg Noah
il 7 Ago 2025 alle 17:14
% signal is a sine wave of 2 Hz
nSamples = 1000;
f = 2; % [Hz]
time = linspace(0, 2, nSamples+1);
signal = sin(2*pi*f*time);
signal_noise=awgn(signal,0,'measured');
% calculate the signal power
signalPower = sum((signal).^2)./nSamples;
% the gaussian white noise
noiseValues = signal_noise - signal;
% verify the Signal-to-Noise value
noisePower = sum(noiseValues.^2)/numel(noiseValues);
SNR = 10*log10(signalPower/noisePower);
fprintf(1,"standard deviation of noise = %f\n", std(noiseValues));
fprintf(1,"SNR: %f\n", SNR);
% Method WITHOUT the awgn
% SNR in db is 10log(Psignal/Pnoise)
snrDb = 0; % [dB]
% noise power such that signal power is 10 dB more
% 10 = 10 log (Ps / Pn)
% Pn is variance which for zero mean gaussian noise
% is essentially - square sum of all samples -> divided by numSamples
noiseStd = sqrt(signalPower / 10^(snrDb/10));
noiseMean = 0;
% generate the gaussian white noise
noiseValues = noiseStd*randn(nSamples,1) + noiseMean;
% verify the Signal-to-Noise value
noisePower = sum(noiseValues.^2)/numel(noiseValues);
SNR = 10*log10(signalPower/noisePower);
fprintf(1,"noiseStd: model input: %f simulation output: %f\n", noiseStd, std(noiseValues));
fprintf(1,"SNR: %f\n", SNR);
0 Commenti
Vedere anche
Categorie
Scopri di più su Propagation and Channel Models in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!