[m,n]=size(A)
for i=1:m
for j=1:n
MM(i,j)=MM(i,j)+20*sin(20*i)+20*sin(20*j)%添加周期噪声
end
end
figureimshow(MM)title(周期噪声图)%%%纯手打,楼主看着办吧
可以将正弦信号在每个时刻的值加上噪声即可实现加噪的目的。把白噪声叠加到信号上去:
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是叠加在信号上的噪声。
对于上面的通用程序,如果X是正弦信号,SNR是要求的信噪比,那么输出的Y就是正弦信号加噪后的信号,NOISE就是所添加的噪声信号。
y = temp'*ones(1,100)%产生100个脉搏,可按需要修改y = y(:)'
t = 0.002*[0:(length(y)-1)]+n*rand(1,length(y))%每个点为2ms即0.002s n为噪声最大值
不过一般用awgn函数添加噪声的
plot(t, y)
xlabel('时间/s')
ylabel('幅度/mV')
如果要使用randn函数添加噪声,应该如何添加,请帮忙把程序补充一下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)