【Matlab学习手记】添加随机噪声

  • Post author:
  • Post category:其他


加性噪声和乘性噪声

白噪声是一种功率谱密度为常数的随机信号或随机过程,是功率谱密度在整个频域内均匀分布的噪声;相对的,其它不具有这一性质的噪声信号(功率谱密度不均匀分布)被称为有色噪声。

一个噪声过程所具有的频谱宽度远远大于它所作用系统的带宽。理想的白噪声具有无限带宽,因而其能量无限大,现实中不可能存在。实际上,我们常常将有限带宽的平整信号视为白噪声,因为这让我们在数学分析上更加方便。一般,只要一个噪声过程所具有的频谱宽度远远大于它所作用的系统的带宽,并且在该带宽中其频谱密度基本上可以作为常数来考虑,就可以把它作为白噪声来处理。例如,热噪声和散弹噪声在很宽的频率范围内具有均匀的功率谱密度,通常可以认为它们是白噪声。

加性噪声一般☞热噪声、散弹噪声等,它们与信号的关系是相加,不管有没有信号,噪声都存在;乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在它就不在。一般通信中把加性随机性看成是系统的背景噪声,乘性随机性看成系统的时变性(如衰落或者多普勒)或者非线性所造成的。

Matlab中高斯白噪声函数

Matlab中产生高斯白噪声非常方便,可以直接调用两个函数: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的单位,‘dBW’,‘dBm’或‘linear’。线性强度(linear power)以瓦特(Watt)为单位
y = wgn(..., outputtype); % 指定输出类型,‘real’或‘complex’

2. awgn添加高斯白噪声

y = awgn(x, snr); % 在信号x中加入高斯白噪声,信噪比snr以dB为单位,如果x是复数,就加入复噪声,假定x的强度为0dBW
y = awgn(x, snr, sigpower); % 如果sigpower是数值,则其代表以dBW为单位的信号强度;如果sigpower为‘measured’,则函数将在加入噪声之前测定信号强度
y = awgn(x, snr, sigpower, state); % 重置randn的状态
y = awgn(..., powertype); % 指定snr和sigpower的单位

注释

1. 分贝(decibel,dB)表示相对功率或幅度电平的标准单位,换句话说,就是我们用来表示两个能量之间的差别的一种表示单位,它不是一个绝对单位。

2. 分贝瓦(dBW,dB Watt)☞以1W的输出功率为基准时,用分贝来测量的功率放大器的功率值。

randn产生高斯分布序列

y = randn(1, 2500); 
y = y/std(y); 
y = y - mean(y); 
a = 0.01; 
b = sqrt(0.81); 
y = a + b*y;

上面的代码得到N(0.01, 0.81)的高斯分布序列。

如要产生均值为u,方差为σ^2的m*n的随机数矩阵,可以用 y = σ * randn(m, n) + u 得到。

如要产生[a, b]区间均匀分布的m*n的随机数矩阵,则可用 y = rand(m, n) * (b – a) + a 得到。

两点说明:1)rand产生的是[0, 1]上的均匀分布随机序列;2)randn产生均值为0,方差为1的高斯随机序列,即白噪声序列;也就是说,可以直接使用上面两个函数对原始信号添加噪声,如

y = x + rand(length(x), 1);
y = x + randn(length(x), 1);



版权声明:本文为u012366767原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。