找回密码
 注册
关于网站域名变更的通知
查看: 581|回复: 1
打印 上一主题 下一主题

MATLAB中白噪声的WGN和AWGN函数的使用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-9-3 18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
MATLAB中白噪声的WGN和AWGN函数的使用如下:
3 |+ e/ N) J* f5 `" X
5 \' Z( Z6 l; P* {1 WMATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一 信号中加入高斯白噪声。
- K) j4 S0 |3 U
* K% F! j% R) }1. WGN:产生高斯白噪声
& W/ H+ A, N' R& x% ?5 A: Zy = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
5 f! @' Q- a% O& P8 W) hy = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。
. {2 L# l- F* ay = wgn(m,n,p,imp,state) 重置RANDN的状态。
& l/ N3 f5 F: c  ]% m9 K7 `
) L5 a( x. W7 s; h1 c) W' l" C1 }! a+ |8 L
在数值变量后还可附加一些标志性参数:, d; I3 f' d6 y3 ~2 q
y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。$ a$ W- p# c2 s8 K
y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。5 E. I5 m' G2 X0 ~5 k3 Y5 s" ^
2. AWGN:在某一信号中加入高斯白噪声
. v$ F' d4 X( X' S& z/ ry = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。
% L7 u! \) x0 b- \y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。; b! J$ [% S" z% {5 U* e
y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。7 }* z% S' I0 x5 }
y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单 位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位! I; W9 @3 Y) \# |7 h) U
5 U1 x, p3 `/ `9 o, h. A7 a
1 L8 ^) A. u& E: E0 ^  P

& z7 J- u6 f7 j 6 C5 M1 u' x( X/ R# Z2 y, o6 d. N
# }/ ^* s1 [9 H. f! @

( J2 G( X' L; P4 H # I1 k) n5 v- v" T+ C( s
MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。
4 b- g0 x* A- y6 w1 G% P1. WGN:产生高斯白噪声 " I  M& w0 @% ^
y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 7 d- N8 H$ O. c, O* k/ ], X
y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。 0 E4 n( e7 F3 G
y = wgn(m,n,p,imp,state) 重置RANDN的状态。, r# W6 {4 ^$ b+ Y4 R+ K6 R! O
在数值变量后还可附加一些标志性参数: - a$ K& X1 ?# L7 N
y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。 - f) ]7 K) z3 T1 }
y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。( g* i% A% W3 E
2. AWGN:在某一信号中加入高斯白噪声 5 [* N! r6 N8 \$ d; @
y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。 7 X5 X) X; |1 q1 {6 V
y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。
+ F- T+ k- x. U* `8 h6 yy = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。 3 p  _) K4 _  I# Z7 X" y0 h8 p
y = awgn(…,POWERTYPE)指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。
- i6 u( u, S# [4 m/ F/ T2 d注释 + C6 G& X/ F6 \- B$ L7 R% q
1. 分贝(decibel,dB):分贝(dB)是表示相对功率或幅度电平的标准单位,换句话说,就是我们用来表示两个能量之间的差别的一种表示单位,它不是一个绝对单位。例如,电子系统中将电压、电流、功率等物理量的强弱通称为电平,电平的单位通常就以分贝表示,即事先取一个电压或电流作为参考值(0dB),用待表示的量与参考值之比取对数,再乘以20作为电平的分贝数(功率的电平值改乘10)。 1 J: }9 D9 h/ `* J8 r7 o7 }
2. 分贝瓦(dBW, dB Watt):指以1W的输出功率为基准时,用分贝来测量的功率放大器的功率值。 # w2 E, |4 C0 K2 v
3. dBm (dB-milliWatt):即与1milliWatt(毫瓦)作比较得出的数字。
5 O. x) v' k9 R( U0 dBm = 1 mW
- G0 @* r/ I3 i; D10 dBm = 10 mW 6 ?) n9 J; Z2 r; K4 p
20 dBm = 100 mW
+ s7 M/ a$ p2 Z) [/ g; S* S7 M也可直接用randn函数产生高斯分布序列,例如:
. v5 Q! E" m8 E  a2 m, b' V6 @3 d7 D$ g- V9 L
程序代码
3 g- d; X$ T8 ^" Zy=randn(1,2500);
2 Z0 T# |% g9 D" p0 t% t, Z& Gy=y/std(y);
" I$ Z& |1 Z# [5 I+ Z* J; B1 ~4 Y5 Ny=y-mean(y);
5 h7 \+ `. {. _/ f, X3 Ia=0.0128;
& ]; j% t" S' b, J4 J7 Nb=sqrt(0.9596);
9 Q1 a. i7 b1 M5 j7 Iy=a+b*y;# X, T9 |- Q0 G+ W

$ J7 n; e2 T( ?' C就得到了 N ( 0.0128, 0.9596 ) 的高斯分布序列( A4 J& T. `1 `# w6 c0 z6 k
产生指定方差和均值的随机数
& {  Z. `  z0 \3 T设某个随机变量x均值为mu,方差为var^2,若要产生同样分布的随机变量y,但使新的随
; C: Y0 J9 r: ^$ w机变量参数改变,均值为mu_1,方差为var_1^2,可以用如下公式进行变换:2 I( q2 W+ }) T+ \. x
y=var_1/var*(x-mu)+mu_1,其中x为随机变量,其余为常数(原分布参数)。
: }( e( H$ ]. Z具体到正态分布,若要产生均值为u,方差为o^2的M*N的随机数矩阵,可以用- P- V, w7 J: D. ?8 U6 x% @" {# T
y=o*randn(M,N)+u得到。
7 I% V1 r2 B% S# B/ x  A对于均匀分布,若要产生[a,b]区间的均匀分布的M*N的随机数矩阵,则可以用" L3 }% [) T" M5 q! {! F0 U
y=rand(M,N)*(b-a)+a得到。+ `/ X2 ~" V% e  N: \
%===========================================================%
7 @9 Z" J- |& q7 L$ g上述资料基本上完整地描述了原始问题,不过有几点内容附带说明一下:
# S) W( g* L9 t0 p( n- i2 I, ~1. 首先更正一个错误,我认为在“生成N ( 0.0128, 0.9596 ) 的高斯分布序列”的程序中,应该改为以下的代码:
; U0 K0 a2 a' ^5 @' m' B, T4 }: H, e2 S% q; a& k
程序代码9 {7 S+ q, W( Q# D+ ?- C
y=randn(1,2500);
  |7 b' M* G- h  T+ Cy=y-mean(y);
" _1 v4 U& w) `! Q. v) x+ }( J. U8 Cy=y/std(y); # ]. h, a1 V' i0 B
a=0.0128; 0 J" t- m( h7 q8 h5 s1 p, g  {/ g
b=sqrt(0.9596); & x. M2 M( o1 H6 v$ n$ E
y=a+b*y;! I' S3 a% ^/ B
2. 上面资料最后部分隐含了一个出自zhyuer 版友的结论:: }1 F7 a  L8 T, a4 K/ E( W" P
%==========================zhyuer===================================%9 }/ x( h" @9 O& _* G0 d; }" l- e( r
1)         rand产生的是[0,1]上的均匀分布的随机序列: g% F! _& q5 w6 r5 [0 h5 o! R+ D
2)         randn产生均值为0,方差为1的高斯随机序列,也就是白噪声序列;  C0 b) e. ?  B6 N6 A/ {4 k
%===================================================================%  P5 q( \: h$ a5 @' Q
也就是说,可以直接使用上面两个函数对原始信号添加噪声(例如y=x+rand(length(x),1)或者y=x+randn(length(x),1))
: I* f3 q& z; R. h8 l8 K' g3.事实上,无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。下面就我熟悉的“向已知信号添加某个信噪比(SNR)的高斯白噪声”来说明一下,不过如果大家阅读过awgn的实现代码就不用看下去了,呵呵。从上述可知,这个任务可以使用awgn函数实现,具体命令是:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号f(x)添加信噪比(比值)为SNR的噪声,在添加之前先估计信号f的强度。这里涉及三个问题:在awgn这个函数中,SNR是如何计算的?什么是信号的强度?awgn函数具体是如何添加噪声的?事实上,前两个问题是相关的,因为根据定义,SNR就是信号的强度除以噪声的强度,所以,首先来讲讲信号的强度。其实信号的强度指的就是信号的能量,在连续的情形就是对f(x)平方后求积分,而在离散的情形自然是求和代替积分了。在matlab中也是这样实现的,只不过多了一个规范化步骤罢了:
3 P9 L7 S5 R" z$ w    sigPower = sum(abs(sig(:)).^2)/length(sig(:))" u6 C& ~9 |$ q2 O
这就是信号的强度。至此,SNR的具体实现也不用多说了(注:由于采用的是比值而非db,所以与下面“计算信噪比”所使用的方式不同,即没有求对数步骤)。, Z; |+ _' q3 h( Q
最后说说awgn函数具体是如何添加噪声的。事实上也很简单,在求出f的强度后,结合指定的信噪比,就可以求出需要添加的噪声的强度noisePower=sigPower/SNR。由于使用的是高斯白噪声即randn函数,而randn的结果是一个强度为1的随机序列(自己试试sum(randn(1000,1).^2)/1000就知道了,注意信号的长度不能太小)。于是,所要添加的噪声信号显然就是:sqrt(noisePower)*randn(n,1),其中n为信号长度。& C# X. }4 W+ ]

该用户从未签到

2#
发表于 2020-9-3 19:08 | 只看该作者
MATLAB中白噪声的WGN和AWGN函数的使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 15:41 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表