MATLAB中白噪声的WGN和AWGN函数的使用以及信噪比的计算 您所在的位置:网站首页 噪声函数积分等于什么 MATLAB中白噪声的WGN和AWGN函数的使用以及信噪比的计算

MATLAB中白噪声的WGN和AWGN函数的使用以及信噪比的计算

2024-07-10 10:59| 来源: 网络整理| 查看: 265

1.信噪比就是信号的平均功率和噪声的平均功率之比,即Signal noise ratio ,简写为SNR;

信噪比,英文名称叫做SNR或S/N(SIGNAL-NOISE RATIO),又称为讯噪比。是指一个电子设备或者电子系统中信号与噪声的比例。这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。同样是“原信号不存在”还有一种东西叫“失真”,失真和噪声实际上有一定关系,二者的不同是失真是有规律的,而噪声则是无规律的。

信噪比的计量单位是dB,其计算方法是10lg(PS/PN),其中Ps和Pn分别代表信号和噪声的有效功率,也可以换算成电压幅值的比率关系:20Lg(VS/VN),Vs和Vn分别代表信号和噪声电压的“有效值”。在音频放大器中,我们希望的是该放大器除了放大信号外,不应该添加任何其它额外的东西。因此,信噪比应该越高越好。

信噪比和噪声的百分比之间的关系:

参考博客:https://blog.csdn.net/cenerd/article/details/86475610

最近看文章,里面提到给数据添加1%-10%的白噪声,文章里提到添加5%的高斯白噪声(信噪比为33.8 dB)因此有点迷惑。Matlab里添加白噪声都采用的randn或者awgn函数,但里面控制噪声的大小采用的是信噪比(dB), 那么1%-5%指得是信号的噪声的强度的直接比值吗? 5%的噪声水平是如何换算出33.8dB的信噪比的,百分比和信噪比之间存在什么样的数学关系吗?如何互换?

​   以matlab中awgn函数为例说明:    在matlab中无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。 根据awgn的实现代码可以知道“向已知信号添加某个信噪比(SNR)的高斯白噪声”, 即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。     这里涉及三个问题:在awgn这个函数中,SNR是如何计算的?什么是信号的强度?awgn函数具体是如何添加噪声的? 事实上,前两个问题是相关的,因为根据定义,SNR就是信号的强度除以噪声的强度,所以,首先来讲讲信号的强度。其实信号的强度指的就是信号的能量,在连续的情形就是对x平方后求积分,而在离散的情形自然是求和代替积分了。在matlab中也是这样实现的,只不过多了一个规范化步骤罢了:    sigPower = sum(abs(sig(: )).^2)/length(sig(: )) 这就是信号的强度。至此,SNR的具体实现也不用多说了(注:由于采用的是比值而非db,所以与下面“计算信噪比”所使用的方式不同,即没有求对数步骤)。 最后说说awgn函数具体是如何添加噪声的。事实上也很简单,在求出x的强度后,结合指定的信噪比,就可以求出需要添加的噪声的强度noisePower=sigPower/SNR。由于使用的是高斯白噪声即randn函数,而randn的结果是一个强度为1的随机序列(自己试试sum(randn(1000,1).^2)/1000就知道了,注意信号的长度不能太小)。于是,所要添加的噪声信号显然就是:sqrt(noisePower)*randn(n,1),其中n为信号长度。    自然要求的白噪声的方差也可以求出来了!

2.什么样的噪声为高斯白噪声呢?

白噪声,指的是:功率谱密度服从均匀分布, 而高斯指的是:噪声的幅度分布服从高斯分布;

百度百科的两种定义:

定义一:如果一个噪声,它的瞬时值服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。

定义二:在一般的通信系统的工作频率范围内热噪声的频谱是均匀分布的,好像白光的频谱在可见光的频谱范围内均匀分布那样,所以热噪声又常称为白噪声。由于热噪声是由大量自由电子的运动产生的,其统计特性服从高斯分布,故常将热噪声称为高斯白噪声。

3.在 matlab中生成高斯白噪声的函数:

wgn()函数, 用它可以生成高斯白噪声,用法很多,说一下基本的用法:

y = wgn(m,n,p),    生成 m * n 的高斯白噪声, 其中p 表示生成噪声的功率,单位为dBw;

给一个信号加入高斯白噪声的函数:

awgn()函数,即 add white gaussian noise to signal;用法1:

y = awgn(x,snr)                 给信号x 加入指定的 SNR 的高斯白噪声,其中默认原信号x 的功率为 0 dBw, 即 1w;

y = awgn(x,snr,sigpower)        给信号x 加入指定的 SNR 的高斯白噪声,sigpower用于指定原信号x的功率,单位为dBw; y = awgn(x,snr,'measured')      给信号x 加入指定的 SNR 的高斯白噪声,它会先测量一个原信号x 的功率

4.MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一 信号中加入高斯白噪声。 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。 y = wgn(m,n,p,imp,state) 重置RANDN的状态。

在数值变量后还可附加一些标志性参数: y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。 y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。 2. AWGN:在某一信号中加入高斯白噪声 y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。 y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。 y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。 y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单 位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有