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中为图片加噪声的语句是:
(1)J = imnoise(I,type)
(2)J = imnoise(I,type,parameters)
其中I为原图象的灰度矩阵,J为加噪声后图象的灰度矩阵
一般情况下用(1)中表示即可,(2)中表示是允许修改参数,而(1)中使用缺省参数
至于type可有五种,分别为'gaussian'(高斯白噪声),'localvar'(与图象灰度值有关的零均值高斯白噪声),'poisson'(泊松噪声),'salt &pepper'(椒盐噪声)和'speckle'(斑点噪声)具体(2)中参数值的设定可根据个人需要其余情况以及若还有不懂请参考Matlab帮助文件。
在此使用'salt &pepper'(椒盐噪声),并将其参数设置为0.6。其例子如下:
L = imread(‘image_ori.jpg’)
J = imnoise(L, ‘salt &pepper’, 0.6)
imshow(J)//立即d出窗口,显示加了噪声后的图片
imwrite(J, ‘image_noise.jpg’, ‘jpg’, ‘Quality’, 100)//按100%的质量存储加了噪声的图片,Quality的默认值为75.
以上程序就表示把原图像加入椒盐噪声,但注意要把图像和以上程序的M文件放在同一个子目录下。
在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))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)