clear all
close all
x=0:0.2:10
data1=sin(x)
plot(x,data1)
hold on
data2=awgn(data1,10*log10(0.05))
plot(x,data2,'r-')
hold off
扩展资料
function [Y,NOISE] = noisegen(X,SNR)
% noisegen add white Gaussian noise to a signal.
% [Y, NOISE] = NOISEGEN(X,SNR) adds white Gaussian NOISE to X. The SNR is in dB.
NOISE=randn(size(X))
NOISE=NOISE-mean(NOISE)
signal_power = 1/length(X)*sum(X.*X)
noise_variance = signal_power / ( 10^(SNR/10) )
NOISE=sqrt(noise_variance)/std(NOISE)*NOISE
Y=X+NOISE
其中X是纯信号,SNR是要求的信噪比,Y是带噪信号,NOISE是叠加在信号上的噪声。
matlab中awgn函数用来在信号中加入高斯白噪声,用法为:
y = awgn(x,SNR)
信噪比SNR以dB为单位。题目要求信噪比为5%,那就是大噪声中的小信号。
如果纯信号为幅值为1的正弦信号,代码如下:
clear all
close all
x=0:0.2:10
data1=sin(x)
plot(x,data1)
hold on
data2=awgn(data1,10*log10(0.05))
plot(x,data2,'r-')
hold off
运行结果如下图,蓝色是纯信号,红色是加了5%信噪比高斯白噪声的信号。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)