信噪比
转载地址:https://blog.csdn.net/ZSZ_shsf/article/details/61413645
文章解释了几个简单的信噪比公式并给出了相关推导和实验分析
signal-to-noise ratio 概念
信噪比定义为信号能量与噪声能量的比值:
SNR=PsignalPnoiseSNR=PsignalPnoise
P是一个平均能量,信号与噪声的能量必须在同一个系统下测量,且保证一定的系统带宽.
如果信号和噪声的方差已知,且信号是0均值。
SNR=σ2signalσ2noise.SNR=σsignal2σnoise2.
如果信号和噪声时在同一条件下测得,那么也可以通过计算幅值平方比值获得信噪比
SNR=PsignalPnoise=(AsignalAnoise)2,SNR=PsignalPnoise=(AsignalAnoise)2,
推导
Psignal,dB=10log10(Psignal)Psignal,dB=10log10(Psignal)
Pnoise,dB=10log10(Pnoise).Pnoise,dB=10log10(Pnoise).
SNRdB=10log10(SNR).SNRdB=10log10(SNR).
SNRdB=10log10(PsignalPnoise).SNRdB=10log10(PsignalPnoise).
10log10(PsignalPnoise)=10log10(Psignal)−10log10(Pnoise).10log10(PsignalPnoise)=10log10(Psignal)−10log10(Pnoise).
SNRdB=Psignal,dB−Pnoise,dB.SNRdB=Psignal,dB−Pnoise,dB.
SNRdB=10log10[(AsignalAnoise)2]=20log10(AsignalAnoise)=(Asignal,dB−Anoise,dB).SNRdB=10log10[(AsignalAnoise)2]=20log10(AsignalAnoise)=(Asignal,dB−Anoise,dB).
实验分析
通过信号输入,加噪,观察加噪时sigma选择的准确性,以及信号能量,噪声信号能量,顺便验证帕塞瓦尔能量定律。
nois = sqrt(sigma)*randn(size(s));
sn = s+nois;
temps = sum(s.^2)/2^N;
tempsn = sum(sn.^2)/2^N;
display(sigma);
tempvs = var(s')
tempvsn = var(sn')
tempd = tempsn-temps
tempfs = fft(s);
tempfsn = fft(sn);
tempfsf = sum(abs(tempfs./2^N).^2)
tempfsnf =sum(abs(tempfsn./2^N).^2)
tempdf = tempfsnf - tempfsf
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
代码说明:s为输入信号(随意选择),sn为带噪信号,平台为Matlab 2015a,这里的sigma实则为σ2σ2
结果展示:
sigma =
0.1000
tempd =
0.0971
tempfsf =
0.9990
tempfsnf =
1.0961
tempdf =
0.0971
K>> tempvs = var(s')%验证用方差计算能量的正确性
tempvsn = var(sn')
tempvs =
1.0000
tempvsn =
1.0972
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
证毕
讲究匠心,追求卓越!
相关阅读
信噪比就是信号的平均功率和噪声的平均功率之比,即:S/N。 用分贝(dB)作为度量单位,即:信噪比(dB)= 10 * log10(S/N) (dB) 例如:当S/N=10