将 AWGN 添加到信号的正确方法

信息处理 matlab 噪音 高斯 信噪比 带宽
2022-02-08 22:30:54

我有一个信号 S,其带宽为bw赫兹,并以fs赫兹采样。

为了用对应于 SNR xdB 的噪声来污染它,我使用了 matlab 函数

out = awgn(S,x);

但是我遇到了一些代码,而不是像下面这样。

out = awgn(S,corrected_x);

在哪里corrected_x = x + 10*log(bw/fs);

哪个是正确的方法,为什么?

1个回答

简短的回答

10*log(bw/fs)考虑过采样操作,因为该函数指定每个样本awgn()的信噪比,以 dB 为单位。

更长的答案

离散时间 AWGN 模型是

Y=X+N

其中 X 是来自连续时间的数据X(t), N 是来自 AWGN 过程的噪声序列N(t)Y 是接收符号。

如果X(t)其特点是其基带等效限制在[W/2,+W/2] (Hz),那么我们可以识别X(t)通过观察Y在一个速率W每秒符号数。见第 2 章,采样定理和无关定理

称呼P平均功率(焦耳每秒)。样本功率Es=P/W噪声符号功率为N0. 每个符号的信噪比定义为SNR=PBW0=Es/N0.

如果复数基带信号被过采样α=fs/W,噪声采样功率仍为N0而数据采样功率降低α次,因此Es/N0=SNR×W/fs.

以分贝为单位,Es/N0=SNR+10log10(W/fs).

awgn()函数通过先前定义的添加 AWG 噪声Es/N0.