美文网首页
添加白噪声

添加白噪声

作者: rivrui | 来源:发表于2020-12-31 21:09 被阅读0次

    SNR的定义

    SNR=\frac{P_{signal}}{P_{noise}}
    SNR:信噪比,信号与噪声的比率
    P:平均能量
    信号功率和噪声功率有着相同的带宽
    如果信号是一个常量s,或者随机变量S,那么对于随机噪声N的SNR为

    SNR=\frac{{s^2}}{E[N^2]}
    E:期望
    SNR=\frac{E{[S^2]}}{E[N^2]}
    如果噪声的期望为0,显然
    E[N^2]=D(N)
    D(N)=E(N^2)+E^2(N)
    显然,D(N)=E[N^2]=(\sigma_N)^2

    分贝

    因为信号动态范围很大,所以,经常用对数分贝缩放,
    P_{signal,dB}=10log_{10}(P_{signal})
    P_{noise,dB}=10log_{10}(P_{noise})
    SNR_{dB}=10log_{10}(SNR)
    因此,
    SNR_{dB}=10log_{10}(\frac{{P_{signal}}}{P_{noise}})
    10log_{10}(\frac{P_{signal}}{P_{noise}})=10log_{10}(P_{signal})-10log_{10}(P_{noise})
    SNR_{dB}=P_{signal,dB}-P_{noise,dB}

    matlab代码

    function [res] = add_noise(data,snr_db)
    %ADD_NOISE 此处显示有关此函数的摘要
    %   此处显示详细说明
    % snr input actually  is snr_db
    % input:data,snr_dB
    %snr_db=10log10(snr)
    %snr=10^(snr_dn/10)
    snr=power(10,snr_db/10);
    % snr=p_s/p_n
    % D(s)=E(s^2)-E(s)^2
    p_s=var(data)+mean(data)^2;
    p_n=p_s/snr;
    sigma=sqrt(p_n);
    noise=normrnd(0,sigma,100,1);
    % x=(1:100)';
    % plot(x,data,'r.');
    % hold on;
    % plot(x,data+noise);
    % legend('原始数据','15dB噪声');
    res=data+noise;
    end
    

    相关文章

      网友评论

          本文标题:添加白噪声

          本文链接:https://www.haomeiwen.com/subject/ylgroktx.html