在通信领域,衡量一个算法的性能经常使用误码率(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噪声,对于复信号有 Bn=Fs=1/TsampBn = Fs = 1/TsampBn=Fs=1/Tsamp。
联系与转换
EsN0(dB)=EbN0(dB)+10log10(K)EsN0(dB) = EbN0(dB) + 10log_{10}(K)EsN0(dB)=EbN0(dB)+10log10(K)
由两者的定义很容易得出上式,Es=K∗EbEs = K*EbEs=K∗Eb,都转换成dB形式即可。
然后需要由EsN0(dB)来推倒出awgn函数所需要的SNR:
Es/N0(dB)=10log10(Es/N0),Es=S∗Tsym,N0=N/Bn Es/N0(dB) = 10log_{10}(Es/N0) , Es=S*Tsym, N0 = N/BnEs/N0(dB)=10log10(Es/N0),Es=S∗Tsym,N0=N/Bn
Es/N0=S∗Tsym/(N/Bn)=(Tsym∗Fs)∗(S/N)Es/N0 = S*Tsym/(N/Bn) = (Tsym*Fs)*(S/N) Es/N0=S∗Tsym/(N/Bn)=(Tsym∗Fs)∗(S/N)
Es/N0(dB)=10log10(Tsym/Tsamp)+SNR(dB)Es/N0(dB) = 10log_{10}(Tsym/Tsamp) + SNR(dB)Es/N0(dB)=10log10(Tsym/Tsamp)+SNR(dB)
SNR(dB)=EbN0(dB)+10log10(K)−10log10(Fs/Rs) 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)之间的转换公式了。其中Fs/RsFs/RsFs/Rs与过采样率有关。如利用4倍于符号率的采样率时,即Fs/Rs = 4,则表示每个符号采4个样点。
对于实信号则有 Bn=2∗FsBn = 2*FsBn=2∗Fs (双边带)。于是转换关系为:
SNR(dB)=EbN0(dB)+10log10(K)−10log10(0.5∗Fs/Rs) SNR(dB) = EbN0(dB) + 10log_{10}(K)-10log_{10}(0.5*Fs/Rs)SNR(dB)=EbN0(dB)+10log10(K)−10log10(0.5∗Fs/Rs)
1291

被折叠的 条评论
为什么被折叠?



