[转载]matlab中噪声功率、噪声方差关系
(2018-05-13 15:38:34)
标签:
转载 |
原文地址:matlab中噪声功率、噪声方差关系作者:无关风月看尽繁华
以matlab中awgn函数为例说明:
这就是信号的强度,这里sig(:
)为信号。
其中n为信号长度。
更新程序如下:
function snr=SNR(I,In)
% 计算信号噪声比函数
% I :original signal,原始信号
% In:noisy signal(ie. original signal + noise
signal),加噪声后的信号
%
snr=10*log10(sigma2(I2)/sigma2(I2-I1))
[row,col,nchannel]=size(I);
snr=0;
if nchannel==1%gray image
Ps=sum(sum((I-mean(mean(I))).^2));%signal
power
Pn=sum(sum((I-In).^2));%noise
power
snr=10*log10(Ps/Pn);
elseif nchannel==3%color image
for i=1:3
Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2));%signal
power
Pn=sum(sum((I(:,:,i)-In(:,:,i)).^2));%noise
power
snr=snr+10*log10(Ps/Pn);
end
snr=snr/3;
end
****************************************************************************************************************************************
一个例子:
X =
sqrt(2)*sin(0:pi/1000000:6*pi);
%产生正弦信号
Y = awgn(X,10,'measured');
%加入信噪比为10db的噪声,加入前预估信号的功率(强度)
sigPower =
sum(abs(X).^2)/length(X)
%求出信号功率
noisePower=sum(abs(Y-X).^2)/length(Y-X)
%求出噪声功率
SNR=10*log10(sigPower/noisePower)
%由信噪比定义求出信噪比,单位为db
*******************************************************************************************************************************************
关于wgn
WGN(m,n,p)产生功率为p
dBW的m*n的高斯白噪声矩阵,其中p是以dbW为单位的输出强度。
若要产生一个均值0,方差为0.0965
的高斯白噪声,不可直接用WGN(N,1,0.0965)产生,而应该如下:
1. N=1000;
x=sqrt(0.0965)*randn(N,1);
Px=(x.'*x)/N
%
验证,这里Px的求法与上面noisePower=sum(abs(Y-X).^2)/length(Y-X)的求法是一致的
2. N=1000;
y=wgn(N,1,10*log10(0.0965));
Py=(y.'*y)/N
%
验证
2. N=1000;
一点说明,对高斯白噪声,其方差和功率(单位为W)是一样的。因此,对方差,要做的只是将w变换成dbw,即dbw=10log(w)。
**************************************************************************************************************************************
信噪比,英文名称叫做SNR或S/N(Signal Noise Ratio),是指系统中信号与噪声的比例。信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。
信噪比的计量单位是dB,其计算方法是10LOG(Ps/Pn),其中Ps和Pn分别代表信号和噪声的有效功率,也可以换算成电压幅值的比率关系:20LOG(Vs/Vn),Vs和Vn分别代表信号和噪声电压的“有效值”。信噪比应该越高越好。
前一篇:[转载]基于距离的计算方法
后一篇:[转载]博士五年总结(一)