在通信领域,衡量一个算法的性能经常使用误码率(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