根据awgn的实现代码可以知道“向已知信号添加某个信噪比(SNR)的高斯白噪声”,
即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。
直接对原始信号添加噪声:
y=x+rand(length(x),1)
y=x+randn(length(x),1))
这样:
randn函数产生高斯分布序列,例如:
y=randn(1,2500)
y=y/std(y)
y=y-mean(y)
a=0.0128
b=sqrt(0.9596)
y=a+b*y
y=rand(1,100)均与分布
R=exprnd(MU,m,n) 生成m×n形式的指数分布的随机数矩阵。
RAYLCDF Rayleigh cumulative distribution function.
P = RAYLCDF(X,B) returns the Rayleigh cumulative distribution
function with parameter B at the values in X.
The size of P is the common size of X and B. A scalar input
functions as a constant matrix of the same size as the other input.
扩展资料:注意事项
在matlab中无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。
根据awgn的实现代码可以知道“向已知信号添加某个信噪比(SNR)的高斯白噪声”,即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。
直接对原始信号添加噪声:
y=x+rand(length(x),1)
y=x+randn(length(x),1))
MATLAB中,论证加噪信号经FRFT变换、滤波后,有效滤除噪声中需要给信号加入高斯白噪声,不要以为轻易的产生一个随机矩阵直接加到信号中就可以喽。那样的噪声大小既不可控,又没有意义。下面是给信号xt加入信噪比为-10db的MATLAB程序段:SNR_db=-10SNR=10^(SNR_db/10)%%%%%%%给LFM信号加高斯白噪声%%%%%%%%计算信号能量sigpower=0for i=1:length(xt)sigpower=sigpower+xt(1,i).^2end%生成噪声noisepower=sigpower/SNR%所需噪声能量noise=randn(1,length(xt))%产生均值为零,方差为一的随机高斯序列noise=noise-repmat(mean(mean(noise)),1,length(xt))%让均值更接近于零%噪声校正AWGNpower=0for i=1:length(xt)AWGNpower=AWGNpower+noise(1,length(xt)).^2%生成噪声的能量endK=noisepower/AWGNpower%所需噪声能量与实际生成噪声能量的比值k=sqrt(K)%校正生成噪声加权值snr=10*log10(sigpower/sum((k*noise).^2))%实际输出信噪比欢迎分享,转载请注明来源:内存溢出
评论列表(0条)