How to add Guassian Noise to non sinusoidal signal
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi,
Given a SNR value in dB I want to add noise to my below narrow pulsed signal .
Fs=200e6;
Fs=200e6;
t=t=0:1/Fs:255/Fs;
Fc=50e6;
tau1=400e-9;
tau2=80e-9;
Req_SNR=10; % in dB
Sn= sin(2*pi*Fc*t).*exp(-4*pi*(((t-tau1)/tau2).^2));
I am following below steps to add noise to signal.
Pow_Sn=sum(St.^2); % compute signal power
rn=randn(1, size(t));
rn_power=sum(rn.^2);
Noise_amp=sqrt(Pow_Sn./((10^(Req_SNR/10)))); %
Noise=rn.*Noise_amp;
Sn_Noise=Sn+Noise;
SNR_measured=snr(Sn_Noise,Noise); % to test.
My questions are as followings:
- Is Signal power computation correct.
- Is noise generation method correct.
- Why SNR_measured do not equal to Req_SNR.
Note: randn outout are not in range of -3.25 to 3.02
.
댓글 수: 0
채택된 답변
Ameer Hamza
2020년 5월 10일
You are confusing the energy and power of the signal. Calculate the value power of signal like this
Pow_Sn=sum(Sn.^2)/numel(Sn);
Try the following code
Fs=200e6;
t=0:1/Fs:255/Fs;
Fc=50e6;
tau1=400e-9;
tau2=80e-9;
Req_SNR=10; % in dB
Sn= sin(2*pi*Fc*t).*exp(-4*pi*(((t-tau1)/tau2).^2));
Pow_Sn=sum(Sn.^2)/numel(Sn); % compute signal power
rn=randn(1, numel(t));
rn_power=sum(rn.^2);
Noise_amp=sqrt(Pow_Sn./((10^(Req_SNR/10)))); %
Noise=rn.*Noise_amp;
Sn_Noise=Sn+Noise;
SNR_measured=snr(Sn,Noise); % to test.
snr requires the clean signal and the noise.
Result:
SNR_measured =
10.2936
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Measurements and Feature Extraction에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!