在通信领域,衡量一个算法的性能经常使用误码率(BER),而横坐标自变量有时使用EbN0,有时又使用SNR。在利用matlab对算法进行性能仿真时,添加AWGN噪声时就需要清楚两者之间的差别及awgn函数的使用。
PS:这篇文章主要是对matlab文档中的“AWGN Channel”词条的翻译。经常被EbN0和SNR之间的关系困惑,导致添加AWGN噪声时出错,然后在网上查找相关说明时,大多要么说不清要么说得不准确,还是要多读官方的说明文档呀,详细而准确!
首先需要明确在matlab中对发送信号进行仿真时,都是对信号进行采样后的离散数据。
符号说明
- SNR:Signal-to-noise ratio 信噪比(dB)信号功率比噪声功率,这是matlab的awgn函数的真正输入参数!!
- S:信号功率,单位瓦特。
- N:噪声功率,瓦特。由功率谱密度的概念知,N = N0*Bn。
- EbN0:Ratio of bit energy to noise power spectral density,每个二进制bit能量与噪声能量谱密度的比值(dB)。一般以该参数作为性能衡量的横坐标
- EsN0:Ratio of symbol energy to noise power spectral density,每个符号能量与噪声能量谱密度的比值(dB)。
- Rb:比特率,即每秒传输多少个bit的二进制数据
- Rs:符号率,每秒传输多少个符号的数据
- K:每个符号所承载的二进制bit数。比如16QAM调制中一个符号承载4bit数据,K=4。因此Rb = K*Rs。
- Tsym:符号周期,每个符号持续的时间,易知Tsym = 1/Rs,单位秒。
- Tsamp:采样周期,每个采样点持续的时间,易知Tsamp = 1/Fs,其中Fs为采样率。
- Bn:噪声带宽,单位赫兹,对于awgn噪声,对于复信号有 B n = F s = 1 / T s a m p Bn = Fs = 1/Tsamp Bn=Fs=1/Tsamp。
联系与转换
E
s
N
0
(
d
B
)
=
E
b
N
0
(
d
B
)
+
10
l
o
g
10
(
K
)
EsN0(dB) = EbN0(dB) + 10log_{10}(K)
EsN0(dB)=EbN0(dB)+10log10(K)
由两者的定义很容易得出上式,
E
s
=
K
∗
E
b
Es = K*Eb
Es=K∗Eb,都转换成dB形式即可。
然后需要由EsN0(dB)来推倒出awgn函数所需要的SNR:
E
s
/
N
0
(
d
B
)
=
10
l
o
g
10
(
E
s
/
N
0
)
,
E
s
=
S
∗
T
s
y
m
,
N
0
=
N
/
B
n
Es/N0(dB) = 10log_{10}(Es/N0) , Es=S*Tsym, N0 = N/Bn
Es/N0(dB)=10log10(Es/N0),Es=S∗Tsym,N0=N/Bn
E
s
/
N
0
=
S
∗
T
s
y
m
/
(
N
/
B
n
)
=
(
T
s
y
m
∗
F
s
)
∗
(
S
/
N
)
Es/N0 = S*Tsym/(N/Bn) = (Tsym*Fs)*(S/N)
Es/N0=S∗Tsym/(N/Bn)=(Tsym∗Fs)∗(S/N)
E
s
/
N
0
(
d
B
)
=
10
l
o
g
10
(
T
s
y
m
/
T
s
a
m
p
)
+
S
N
R
(
d
B
)
Es/N0(dB) = 10log_{10}(Tsym/Tsamp) + SNR(dB)
Es/N0(dB)=10log10(Tsym/Tsamp)+SNR(dB)
S
N
R
(
d
B
)
=
E
b
N
0
(
d
B
)
+
10
l
o
g
10
(
K
)
−
10
l
o
g
10
(
F
s
/
R
s
)
SNR(dB) = EbN0(dB) + 10log_{10}(K)-10log_{10}(Fs/Rs)
SNR(dB)=EbN0(dB)+10log10(K)−10log10(Fs/Rs)
因此上式就是性能曲线图横坐标EbN0(dB)与awgn输入参数SNR(dB)之间的转换公式了。其中
F
s
/
R
s
Fs/Rs
Fs/Rs与过采样率有关。如利用4倍于符号率的采样率时,即Fs/Rs = 4,则表示每个符号采4个样点。
对于实信号则有
B
n
=
2
∗
F
s
Bn = 2*Fs
Bn=2∗Fs (双边带)。于是转换关系为:
S
N
R
(
d
B
)
=
E
b
N
0
(
d
B
)
+
10
l
o
g
10
(
K
)
−
10
l
o
g
10
(
0.5
∗
F
s
/
R
s
)
SNR(dB) = EbN0(dB) + 10log_{10}(K)-10log_{10}(0.5*Fs/Rs)
SNR(dB)=EbN0(dB)+10log10(K)−10log10(0.5∗Fs/Rs)