信噪比(一些概念,公式推导,实验分析)

    xiaoxiao2021-03-25  303

    文章解释了几个简单的信噪比公式并给出了相关推导和实验分析

    Signal-to-noise ratio 概念

    信噪比定义为信号能量与噪声能量的比值: SNR=PsignalPnoise P是一个平均能量,信号与噪声的能量必须在同一个系统下测量,且保证一定的系统带宽.

    如果信号和噪声的方差已知,且信号是0均值。 SNR=σ2signalσ2noise.

    如果信号和噪声时在同一条件下测得,那么也可以通过计算幅值平方比值获得信噪比 SNR=PsignalPnoise=(AsignalAnoise)2,

    推导

    Psignal,dB=10log10(Psignal)

    Pnoise,dB=10log10(Pnoise).

    SNRdB=10log10(SNR).

    SNRdB=10log10(PsignalPnoise).

    10log10(PsignalPnoise)=10log10(Psignal)10log10(Pnoise).

    SNRdB=Psignal,dBPnoise,dB.

    SNRdB=10log10(AsignalAnoise)2=20log10(AsignalAnoise)=(Asignal,dBAnoise,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

    代码说明:s为输入信号(随意选择),sn为带噪信号,平台为matlab 2015a,这里的sigma实则为 σ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

    证毕

    讲究匠心,追求卓越!

    转载请注明原文地址: https://ju.6miu.com/read-26344.html

    最新回复(0)