MATLAB仿真:EbN0到SNR的转换

通信系统中的转换关系

在MATLAB中,通信系统的EbN0与SNR的转换关系如下:

S N R = E b N 0 + 10 l o g 10 ( C o d e r a t e ) + 10 l o g 10 ( R m ) − 10 l o g 10 ( n S a m ) SNR=EbN0+10log10(Coderate)+10log10(Rm)-10log10(nSam) SNR=EbN0+10log10(Coderate)+10log10(Rm)10log10(nSam)
其中,Coderate指系统的编码效率,Rm指系统的调制阶数 R m = l o g 2 M Rm=log_2M Rm=log2M,M指调制星座图点数,nSam指系统的上采样倍数。
下面将分两步对上述公式进行推导:1、模拟系统中的推导;2、matlab仿真中的推导。

模拟系统中的转换公式推导

S N = E b / T b N 0 ∗ W = E b ∗ R b N 0 ∗ W = E b N 0 ∗ R b W \frac{S}{N}=\frac{Eb/Tb}{N_0*W}=\frac{Eb*Rb}{N_0*W}=\frac{Eb}{N_0}*\frac{Rb}{W} NS=N0WEb/Tb=N0WEbRb=N0EbWRb
其中,Tb指一个bit的的传输时间,W指信道带宽, N 0 N_0 N0指噪声功率谱密度, R b Rb Rb表示比特速率, R b = 1 T b Rb=\frac{1}{T_b} Rb=Tb1

公式的分子为每比特能量除以传输每比特数据需要的时间,即功率;公式分母为带宽,这里的带宽即为噪声的带宽。
R s = R b ∗ C o d e r a t e ∗ R m Rs =Rb*Coderate*Rm Rs=RbCoderateRm
其中,Rs指一个符号的传输速率。
W = ( 1 + α ) R s W=(1+\alpha)Rs W=(1+α)Rs
其中,W指信道带宽。考虑到实际系统中收发端均会有一个脉冲成型滤波器,脉冲成型滤波器会影响噪声的带宽。
故,模拟系统的转换公式为:
S N = E b / T b N 0 ∗ W = E b ∗ R b N 0 ∗ W = E b N 0 ∗ C o d e r a t e ∗ R m 1 + α \frac{S}{N}=\frac{Eb/Tb}{N_0*W}=\frac{Eb*Rb}{N_0*W}=\frac{Eb}{N_0}*\frac{Coderate*Rm}{1+\alpha} NS=N0WEb/Tb=N0WEbRb=N0Eb1+αCoderateRm
转换为dB形式为:
S N R = E b N 0 + 10 l o g 10 ( c o d e r a t e ) + 10 l o g 10 ( R m ) − 10 l o g 10 ( 1 + α ) SNR=EbN0+10log_{10}(coderate)+10log_{10}(Rm)-10log_{10}(1+\alpha) SNR=EbN0+10log10(coderate)+10log10(Rm)10log10(1+α)
推导过程中最本质的思想就是将EbN0中的比特能量和噪声功率谱密度转换为信号功率和噪声功率。

噪声的测量带宽

注意一点实际上,脉冲成型波器对于带宽的影响比较复杂,结合下图进行说明。
张少侃, 吕聪敏, 甘浩. 数字通信系统中Eb/N0与SNR转换方法的研究[J]. 现代计算机, 2019(12):4.
图中的曲线为脉冲成型滤波器的频率响应(根升余弦滚降滤波器)。高斯白噪声信号经过该滤波器之后,曲线以外的数据会被滤掉。并且图中阴影部分1,2,3,4的面积是相等的。
发送端,带宽为 s r sr sr的脉冲信号经过脉冲成型滤波器时,其带宽会变为 W W W。接收端,会使用一个匹配滤波器(与发送端的脉冲成型滤波器相同)。
在测量信号功率时,必须测量 W W W带宽内的功率。测量噪声功率,可以测量 b r br br带宽,也可以测量 W W W带宽。实际上,结合上面脉冲成型滤波器的脉冲响应图,可以知道测量 b r br br带宽的噪声功率就是相当于测量白噪声经过升余弦滚降滤波器的功率。即有:
N 0 W = ( 1 + α ) N 0 b r N_{0W}=(1+\alpha)N_{0br} N0W=(1+α)N0br
N 0 W N_{0W} N0W表示测量 W W W带宽的噪声功率, N 0 b r N_{0br} N0br表示测量 b r br br带宽的噪声功率。
则可以得到测量br带宽的转换公式为:
S N = E b / T b N 0 ∗ W = E b ∗ R s N 0 ∗ W = E b N 0 ∗ C o d e r a t e ∗ R m 1 + α \frac{S}{N}=\frac{Eb/Tb}{N_0*W}=\frac{Eb*Rs}{N_0*W}=\frac{Eb}{N_0}*\frac{Coderate*Rm}{1+\alpha} NS=N0WEb/Tb=N0WEbRs=N0Eb1+αCoderateRm
则可以得到测量W带宽的转换公式为:
S N = E b / T b N 0 ∗ W = E b ∗ R s N 0 ∗ W = E b N 0 ∗ C o d e r a t e ∗ R m \frac{S}{N}=\frac{Eb/Tb}{N_0*W}=\frac{Eb*Rs}{N_0*W}=\frac{Eb}{N_0}*Coderate*Rm NS=N0WEb/Tb=N0WEbRs=N0EbCoderateRm

数字系统的转换公式(MATLAB)

MATLAB 仿真中添加加性高斯白噪声常常使用函数库中的 AWGN 函数进行添加,然而使用 AWGN 函数添加的加性高斯白噪声是按照上节中所述的 s r sr sr 带宽进行添加的。
matlab中收端的匹配滤波会使得信噪比提高nSam倍(上采样倍数)。故,MATLAB最终的转换公式为:
S N = E b / T b N 0 ∗ W = E b ∗ R s N 0 ∗ W = E b N 0 ∗ C o d e r a t e ∗ R m n S a m \frac{S}{N}=\frac{Eb/Tb}{N_0*W}=\frac{Eb*Rs}{N_0*W}=\frac{Eb}{N_0}*\frac{Coderate*Rm}{nSam} NS=N0WEb/Tb=N0WEbRs=N0EbnSamCoderateRm
转换为dB形式为:
S N R = E b N 0 + 10 l o g 10 ( c o d e r a t e ) + 10 l o g 10 ( R m ) − 10 l o g 10 ( n S a m ) SNR=EbN0+10log_{10}(coderate)+10log_{10}(Rm)-10log_{10}(nSam) SNR=EbN0+10log10(coderate)+10log10(Rm)10log10(nSam)

以上内容均参考:张少侃, 吕聪敏, 甘浩. 数字通信系统中Eb/N0与SNR转换方法的研究[J]. 现代计算机, 2019(12):4.

下面讲一下,我自己遇到的问题。

在不使用成型滤波器和匹配滤波器的条件下得到理论误码率。首先看结果,能够达到理论误码率。
误码率
但是,这种处理方式是错误的,能够得到理论误码率是个巧合。具体的处理流程:发送端在进行上采样时,插0,不经过脉冲成型滤波器,直接发送;接收端,不经过匹配滤波器,直接下采样解调。下面说下错误的原因,直接插值不经过脉冲成型出来的频谱是不对的。
在这里插入图片描述
再说下为什么能够达到理论误码率。这是因为使用AWGN加噪之后,会在整个频段(数值上等于 f s f_s fs)添加高斯白噪声。但是由于发送端是插0上采样,并且没有经过脉冲成滤波器,所有信号能量只集中在采样点上(即是说信号功率在数值上会变为原来的 1 n S a m \frac{1}{nSam} nSam1。而添加噪声会按照此时的信号功率添加,变为理论噪声功率的 1 n S a m \frac{1}{nSam} nSam1。对于采样点,信噪比变为理论信噪比的 n S a m nSam nSam倍(与匹配滤波器能够提升 n S a m nSam nSam倍对应)。

应用转换公式得到的理论误码率曲线

下面是应用转换公式转换,仿真得到的误码率曲线图,如图所示,基本能够达到理论误码率。
在这里插入图片描述

如有问题,欢迎交流学习

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值