如何计算信号的信噪比

一、ggkkt
来自科学教育类芝麻团 推荐于2017-09-11
计算信号的信噪比:
1、信噪比的计量单位是dB,其计算方法是10LOG(Ps/Pn),其中Ps和Pn分别代表信号和噪声的有效功率。请注意:这是功率比。
2、也可以换算成电压幅值的比率关系: 20LOG(Vs/Vn),Vs和Vn分别代表信号和噪声电压的“有效值”。请注意:这是电压比。
3、信噪比通常不是直接进行测量的,而是计算出来的。通常的方法是:给放大器一个标准信号,调整放大器的放大倍数使其达到最大不失真输出功率或幅度(厂家调试失真的范围由规定的标准决定,我们自己调试凭听觉经验确定),用万能表测记下此时放大器的输出电压Vs,然后撤除输入信号,测量此时出现在输出端的噪声电压,记为Vn,再根20LOG(Vs/Vn)就可以计算出信噪比了。

二、懂我823
来自百度知道认证团队 2018-05-22
在信号处理中经常需要把噪声叠加到信号上去,在叠加噪声时往往需要满足一定的信噪比, 这样产生二个问题,其一噪声是否按指定的信噪比叠加, 其二怎么样检验带噪信号中信噪比 满足指定的信噪比。

在 MATLAB 中可以用 randn 产生均值为 0方差为 1的正态分布白噪声,但在任意长度下 x=randn(1,N), x 不一定是均值为 0方差为 1(有些小小的偏差) ,这样对后续的计算会产生 影响。 在这里提供 3个函数用于按一定的信噪比把噪声叠加到信号上去, 同时可检验带噪信 号中信噪比。
把白噪声叠加到信号上去:
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 是叠加在信号上的噪声。
把指定的噪声叠加到信号上去
有标准噪声库 NOISEX-92,其中带有白噪声、办公室噪声、工厂噪声、汽车噪声、坦克噪声 等等, 在信号处理中往往需要把库中的噪声叠加到信号中去, 而噪声的采样频率与纯信号的 采样频率往往不一致,需要采样频率的校准。
function [Y,NOISE] = add_noisem(X,filepath_name,SNR,fs)
% add_noisem add determinated noise to a signal.
% X is signal, and its sample frequency is fs;
% filepath_name is NOISE’s path and name, and the SNR is signal to noise ratio in dB.
[wavin,fs1,nbits]=wavread(filepath_name);
if fs1~=fs
wavin1=resample(wavin,fs,fs1);
end
nx=size(X,1);
NOISE=wavin1(1:nx);
NOISE=NOISE-mean(NOISE);
signal_power = 1/nx
sum(X.*X);
noise_variance = signal_power / ( 10^(SNR/10) );
NOISE=sqrt(noise_variance)/std(NOISE)NOISE;
Y=X+NOISE;
其中 X 是纯信号, filepath_name是指定噪声文件(.wav )的路径和文件名, SNR 是要求的信 噪比, fs 是信号 X 的采样频率, Y 是带噪信号, NOISE 是叠加在信号上的噪声。
检验带噪信号的信噪比
信噪比的定义为
信号能量 (纯信号 )^2
SNR=-----------------=--------------------------
噪声能量 (带噪信号 -纯信号 )^2
function snr=SNR_singlech(I,In)
% 计算信噪比函数
% I :original signal
% In:noisy signal(ie. original signal + noise signal)
snr=0;
Ps=sum(sum((I-mean(mean(I))).^2));%signal power
Pn=sum(sum((I-In).^2)); %noise power
snr=10
log10(Ps/Pn);
其中 I 是纯信号, In 是带噪信号, snr 是信噪比
扩展资料:
信噪比,英文名称叫做SNR或S/N(SIGNAL-NOISE RATIO),又称为讯噪比。是指一个电子设备或者电子系统中信号与噪声的比例。这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。
同样是“原信号不存在”还有一种东西叫“失真”,失真和噪声实际上有一定关系,二者的不同是失真是有规律的,而噪声则是无规律的。
信噪比的计量单位是dB,其计算方法是10lg(PS/PN),其中Ps和Pn分别代表信号和噪声的有效功率,也可以换算成电压幅值的比率关系:20Lg(VS/VN),Vs和Vn分别代表信号和噪声电压的“有效值”。在音频放大器中,我们希望的是该放大器除了放大信号外,不应该添加任何其它额外的东西。因此,信噪比应该越高越好。

你可能感兴趣的:(如何计算信号的信噪比)