许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB函数awgn详解:添加高斯白噪声

MATLAB函数awgn详解:添加高斯白噪声

阅读数 4
点赞 0
article_banner


语法

out = awgn(in,snr)
out = awgn(in,snr,signalpower)

out = awgn(in,snr,signalpower,randobject)
out = awgn(in,snr,signalpower,seed)
out = awgn(___,powertype)


说明

out = awgn(in,snr) 将高斯白噪声添加到矢量信号 in 中。此条语法假定 in 的功率为 0 dBW。

out = awgn(in,snr,signalpower) 接受以 dBW 为单位的输入信号功率值。要使该功能在添加噪声之前测量 in 的功率,请将 signalpower 指定为 measured举例

out = awgn(in,snr,signalpower,randobject) 接受满足前述两条语法,外加随机数流对象的输入组合以生成满足正态分布的随机噪声样本。有关产生可重复噪声样本的信息,请参见提示举例

out = awgn(in,snr,signalpower,seed) 指定用于初始化正态随机数生成器的种子值,该种子值将高斯白噪声添加到输入信号时使用。 有关产生可重复噪声样本的信息,请参见提示

out = awgn(___,powertype) 除了前面任何语法中的输入自变量之外,还将信号和噪声功率类型指定为 dBlinear

   有关 SNR 与噪声相对功率的其他度量(例如  E S / N 0 E_\mathrm{S}/N_0 ES​/N0​ 和  E b / N 0 E_\mathrm{b}/N_0 Eb​/N0​)之间的关系,请参阅 AWGN 信道噪声级别



示例



AWGN 添加到锯齿信号

创建一个锯齿波。

t = (0:0.1:10)';
x = sawtooth(t);

应用高斯白噪声并绘制结果图。

y = awgn(x,10,'measured');
plot(t,[x y])
legend('Original Signal','Signal with AWGN')

将 AWGN 添加到锯齿信号


AWGN 信道中的常规 QAM 调制

在存在高斯噪声的情况下,使用非矩形 16 元星座发送和接收数据。显示噪声星座图的散点图,并针对两种不同的信噪比估算符号错误率(SER)。

根据电话线调制解调器的 V.29 标准创建一个 16-QAM 星座。

c = [-5 -5i 5 5i -3 -3-3i -3i 3-3i 3 3+3i 3i -3+3i -1 -1i 1 1i];
M = length(c);

生成随机符号。

data = randi([0 M-1],2000,1);

通过使用 genqammod 函数调制数据。由于星座图不是矩形,因此必须进行常规 QAM 调制。

modData = genqammod(data,c);

使信号通过具有 20 dB信噪比(SNR)的 AWGN 信道。

rxSig = awgn(modData,20,'measured');

显示接收信号和参考星座图的散点图。

h = scatterplot(rxSig);
hold on
scatterplot(c,[],[],'r*',h)
grid
hold off

AWGN 信道中的常规 QAM 调制

   通过使用 genqamdemod 函数解调接收到的信号。确定符号错误的数量和符号错误率。

demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 1
ser = 5.0000e-04

使用具有 10 dB SNR 的 AWGN 信道重复传输和解调过程。 确定降低 SNR 的符号错误率。不出所料,当 SNR 降低时,性能会下降。

rxSig = awgn(modData,10,'measured');
demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 462
ser = 0.2310

用 RandStream 产生可重复的 AWGN

使用 RandStream 对象和 MATLAB  )生成高斯白噪声相加结果。

将 X 的功率指定为 0 dBW,添加噪声以产生 10 dB 的 SNR,并利用本地随机流。

S = RandStream('mt19937ar','Seed',5489);
sigin = sqrt(2)*sin(0:pi/8:6*pi);
sigout1 = awgn(sigin,10,0,S);

将 AWGN 添加到 sigin。 使用 isequal 比较 sigout1sigout2。 当不重置随机流时,输出不相等。

sigout2 = awgn(sigin,10,0,S);
isequal(sigout1,sigout2)
ans = logical
   0

重置随机流对象,将对象返回其状态,然后再将 AWGN 添加到 sigout1。 将 AWGN 添加到 sigin 并将 sigout1sigout3 比较。 重置随机流后,输出相等。

reset(S);
sigout3 = awgn(sigin,10,0,S);
isequal(sigout1,sigout3)
ans = logical
   1

输入参数


in - 输入信号

输入信号,指定为标量向量数组。假定输入信号的功率为0 dBW。

数据类型double
复数支持:是


snr - 信噪比(SNR)

信噪比(以 dB 为单位),指定为标量

注意: 加上噪声后,此函数会将相同的 snr 应用于完整输入信号的所有元素。阵列输入信号没有独立通道的概念。 要独立考虑多个频道,请参阅 comm.AWGNChannel。

数据类型double


signalpower - 信号功率

信号功率,指定为标量measured

  • 当 signalpower 为标量时,该值用作 in 的信号电平,以便根据 snr 的值确定适当的噪声电平。
  • 当 signalpower 为 measured 时,将计算 in 的信号电平,以根据 snr 的值确定适当的噪声电平。
注意: 当指定 measured 时,此函数将使用完整输入信号的所有元素来计算信号功率。在计算功率时,阵列输入信号没有独立通道的概念。

数据类型double



randobject - 随机数流对象

随机数流对象,指定为 RandStream 对象。 随机流对象的状态确定 randn 函数产生的数字序列。使用 reset 函数及其属性来配置随机流对象。

wgn 使用 randn 生成正常的随机噪声样本。randn 函数使用 RandStream 对象中的一个或多个统一值来生成每个正态值。

有关产生可重复噪声样本的信息,请参见提示



seed - 随机数生成器种子

随机数生成器种子,指定为标量



powertype - 信号功率单元

信号功率单元,指定为 dBlinear。默认为 dB

  • 当功率类型为 dB 时,以 dB 为单位测量 snr,以 dBW 为单位测量信号功率。
  • 当功率类型为 linear 时,snr 以比率进行测量,signalpower 以瓦特为单位。

有关 SNR 与噪声相对功率的其他度量(例如  E S / N 0 E_\mathrm{S}/N_0 ES​/N0​ 和  E b / N 0 E_\mathrm{b}/N_0 Eb​/N0​)之间的关系,请参阅 AWGN 信道噪声级别



输出参数



out - 输出信号

输出信号,以标量向量数组形式返回。 返回的输出信号是添加了高斯白噪声的输入信号。



提示

  • 要生成可重复的高斯白噪声样本,请使用以下技巧之一: 提供静态 seed 值作为 awgn 的输入。 在将 randobject 传递为 awgn 的输入之前,请对 randobject 使用 reset 函数。 将处于已知状态的 randobject 提供给 awgn。有关更多信息,请参见 RandStream。


扩展功能



C/C++ 代码生成  

使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

用法说明和限制:

支持代码生成,但包括 RandStream 对象的语法除外。



另请参阅

函数

RandStream | bsc | randn | wgn

对象

comm.AWGNChannel

话题

AWGN Channel Noise Level



在 R2006a 之前推出



原文参考:https://ww2.mathworks.cn/help/comm/ref/awgn.html


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空