信噪比讨论(matlab加噪方式、案例分析)_信道加噪-程序员宅基地

信噪比讨论1

1 参数确定

LTE中采用OFDM调制方法,其中的一个指标为30MHz的采样率,其中有效信息带宽为18MHz。下面从这个案例出发研究信噪比之间的关系。
首先,明确几个符号的意义 :
S:信号的平均功率 N: 噪声的平均功率
Eb: 每bit信号能量 N0:噪声的功率谱密度
Es:信号(符号)的能量 Rb:传信率(每秒传输的bit数)
W: 信号带宽 T: 符号周期
Ts: 采样点间隔 k: 每个符号包含的bit数
因此,有如下公式:
E b N o = S N R − 10 l g ( R b / W ) = S N R − 10 l g ( f s ∗ M ∗ C o d e R a t e / W ) = S N R − 10 l g ( 30.72 / 18 ∗ M ∗ C o d e R a t e ) = S N R − 10 l g ( 30.72 / 18 ∗ k ) EbNo=SNR-10lg(Rb/W)= SNR-10lg(fs*M*CodeRate/W)=SNR-10lg(30.72/18*M*CodeRate) = SNR-10lg(30.72/18 * k) EbNo=SNR10lgRb/W=SNR10lgfsMCodeRate/W=SNR10lg30.72/18MCodeRate=SNR10lg30.72/18k
E s N o = S N R − 10 l g ( 1 / T ∗ W ) = S N R − 10 l g ( 30.72 ∗ N s / W ) EsNo=SNR-10lg(1/T*W)= SNR-10lg(30.72*Ns/W) EsNo=SNR10lg1/TW=SNR10lg30.72Ns/W
R b = f s ∗ M ∗ c o d e r a t e = 30.72 ∗ M ∗ c o d e r a t e = 30.72 ∗ k Rb = fs*M*coderate = 30.72*M*coderate = 30.72*k Rb=fsMcoderate=30.72Mcoderate=30.72k
W = 18 M H z W = 18MHz W=18MHz
T = 1 / f s = 1 / 30.72 M H z T = 1/fs = 1/30.72MHz T=1/fs=1/30.72MHz
k = M ∗ C o d e R a t e k = M*CodeRate k=MCodeRate
同时,这些公式说明了无论对于单载波或者是OFDM多载波调制,其结论和计算方法都是一样的。

2 DFT-S-OFDM波形的噪声

关于DFT-S-OFDM波形,与上面保持同样的结论。
这里主要讨论的是不同的用户需要的信噪比都是一样的吗?

3 加噪方式讨论

3.1 wgn函数与awgn函数两者的区别

1)normal

首先得明确EsN0EbN0的区别,两者转换如下:2
E s N 0 = E b N 0 + 10 ∗ l o g 10 ( M ∗ C o d e R a t e ) EsN0 = EbN0 + 10*log10(M*CodeRate) EsN0=EbN0+10log10(MCodeRate)
对应下面代码可以得知两者的关系。
S N R = E s N 0 − 10 ∗ l o g 10 ( i n s v a l u e ) SNR = EsN0 - 10*log10(ins_value) SNR=EsN010log10(insvalue)
在matlab函数中,对于加噪函数,awgn函数中加的是SNR值,在wgn函数中加的是EsN0。换句话说,awgn会计算信号的能量,wgn只是对于功率为1的信号对应信噪比的噪声进行直接叠加。
下面代码对比了两种加噪方式的区别,最终的SNR为4dB,EsNo为10dB。

clear
EsN0 = 10;
ins_value = 4;
[psf,den] = rcosine(1,ins_value,'fir/sqrt',0.35,6);
list = 0:pi/1000000:6*pi;
X = sqrt(2)*sin(list);                %产生正弦信号
X_upsample = upsample(X,ins_value);
txSig = conv(X_upsample,psf);
SNR = EsN0 - 10*log10(ins_value);
% Y_temp = awgn(txSig,SNR,'measured');                          %加入信噪比为10db的噪声,加入前预估信号的功率(强度)
Y_temp= txSig + wgn(1,length(txSig),-EsN0,'complex');
Y = Y_temp(49:end-48);
% 计算信噪比(下采样前计算信噪比)
% 因为是在滤波成型之后才加噪所以评估这个合理
sigPower = sum(abs(txSig).^2)/length(txSig);            %求出信号功率
noisePower=sum(abs(Y_temp-txSig).^2)/length(Y_temp-txSig);   %求出噪声功率
SNR=10*log10(sigPower/noisePower)          %由信噪比定义求出信噪比,单位为dB
% 隔取ins_value选取再计算信噪比也是一样的。
Y_temp = Y_temp(1:4:end);
txSig = txSig(1:4:end);
sigPower = sum(abs(txSig).^2)/length(txSig);            %求出信号功率
noisePower=sum(abs(Y_temp-txSig).^2)/length(Y_temp-txSig);   %求出噪声功率
SNR=10*log10(sigPower/noisePower)  

或者有以下简短的代码:

X = sqrt(2)*sin(0:pi/1000000:6*pi);                %产生正弦信号,功率为1
% Y = awgn(X,10,'measured');                          %加入信噪比为10db的噪声,加入前预估信号的功率(强度)
Y = X + wgn(1,length(X), -10);
std_noise = std(wgn(1,length(X), - 10))^2
sigPower = sum(abs(X).^2)/length(X)   ;         %求出信号功率
noisePower = sum(abs(Y-X).^2)/length(Y-X);      %求出噪声功率
SNR = 10*log10(sigPower/noisePower)             %由信噪比定义求出信噪比,单位为db

由此可见,计算信噪比的方式为SNR=10*log10(sigPower/noisePower)

2)matlab的官方文档3

EsN0 ⁡ ( d B ) = E b N 0 ( d B ) + 10 log ⁡ 10 ( K ) \operatorname{EsN0}(d B)=E b N 0(d B)+10 \log _{10}(K) EsN0(dB)=EbN0(dB)+10log10(K)

3.2 EbN0和SNR两者的关系

EsN0与SNR的关系如下
E s N 0 = S ∗ T / ( N / B ) = S / N ∗ T s y m b o l ∗ B EsN0 = S*T/(N/B) = S/N *T_{symbol} *B EsN0=ST/(N/B)=S/NTsymbolB
下面讨论仿真中的一些想法:

  • 在实际的信号传输过程中,讨论的是信噪比SNR。如果不进行滤波成型,那么两者一致,但是在实际的通信系统中,考虑无ISI准则一级硬件实现的代价,往往发送端需要成型滤波,在接收端需要进行成型滤波最大化接受信号的信噪比,这就需要过采样。实际上这个过程增大了信号的EsN0,提升了性能。
  • 比较容易理解的是,在相同的SNR之下,如果信号被过采样,则等效于EbN0更高,EsN0也更高。
  • 同时需要注意在成型滤波时产生的能量损失,损失sqrt(insvalue)。(insvalue代表采样倍数)

3.3 成型滤波与匹配滤波器对噪声的影响

下面讨论仿真中的一些想法:

  • 同样需要特别注意的是成型滤波匹配滤波给信噪比带来的影响。上面说成型滤波和上采样提升了EsN0,最后SNR和EsN0呈现上述关系。但是匹配滤波之后同样会改变信噪比。
  • 如果是使用滤波前后的信号计算信噪比,那么无疑是不对的,因为滤波会改变频谱自然会对信号产生影响,最终变成什么样也是不好预测的。
  • SNR是显性的,代表着真实的信道环境,而估计出来的EsN0是真实的每个符号所对应的信噪比

4 EbNo与SNR之间的关系4

4.1 两个问题

Q1:为什么要将EbN0转换为SNR呢?
A1:因为在实际仿真中要给信号加上高斯白噪声,而高斯白噪声的参数是与SNR直接相关的,即根据SNR变量,可以直观的给信号加上高斯白噪声,所以要将EbN0转换为SNR。一般而言,模拟系统常采用SNRBER来衡量通信系统性能,而对于数字通信系统,常采用EbN0BER来衡量通信系统的性能。
Q2:为什么仿真要用EbN0,而不用SNR呢?
A2:因为用EbN0可以直观的看到系统性能,EbN0是一个归一化的参量,由于在系统传输中会采用不同的调制技术,这样这不同进制的调制技术下频谱效率会不同,一个由k个比特映射生成的调制符号所实现的频谱效率就为k bit/s/Hz,这种情况下,在计算比特误码率的时候考虑的是整体的性能,如果横向的比较系统的性能,就要将系统效率的作用排除,此时就可以从单个比特着手去比较,EbN0可以排除频谱效率引起的问题。

4.2 示例分析

假如用户的数据传送速率为1kb/s,信道编码采用编码速率为1/3的卷积编码,每秒在这些编码数据前添加200bit的训练序列,星座映射采用QPSK调制方式,基带脉冲成型采用因子为alpha等于0.25的升余弦函数,上采样倍数为10。
首先来看一下经过各模块后数据速率的变化,原始信息速率为1kb/s,1/3卷积编码后变为3kb/s,也就是每秒传送3000bit数据,添加200bit的训练序列后,变为每秒传3200bit,此时数据速率变为3.2kb/s,采用QPSK调制后,速率变为1.6k symbol/s。
应用上述EbN0与SNR的转换公式,我们可得:
SNR=EbN0·(1/3)·(3000/3200)·log2(4)·(1/10)·(1/(1+0.25))
用dB表示,就是:
SNR(dB)=EbN0(dB)+10·log10(1/3)+10·log10(3000/3200) +10·log10(2)+10·log10(1/10)+10·log10(1/(1+0.25))
以上的公式中,1/3是卷积码引入的,3000/3200是因为添加了训练序列这个额外的开销而引入的,2是QPSK引入的,1/10是基带成型滤波前上采样引入的,1/(1+0.25)是基带脉冲成型滤波的升余弦函数因子引入的。
一般很容易忘记考虑训练序列或者保护间隔,一般影响不大,本例中10·log(3000/3200)接近0,但其他各项影响都很大,如果仿真结果性能超好,应该看看是否忘记哪项了。如果系统还进行了扩频,比如添加训练序列后进行了16倍扩频,那么还要考虑扩频增益带来的影响,此时,在转化为SNR时,EbN0应该还要加上10·log(1/16)。


  1. https://blog.csdn.net/chenxingp123/article/details/24238509

  2. https://blog.csdn.net/chenshiming1995/article/details/105465014

  3. SNR、EbN0、EsN0的关系以及matlab仿真时添加AWGN噪声

  4. 张少侃 EbN0与SNR转化新解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chenshiming1995/article/details/105068935

智能推荐

在移动硬盘中安装win10和macos双系统-程序员宅基地

文章浏览阅读1.1k次,点赞22次,收藏23次。本文通过在SSD移动硬盘中安装win10和macos双系统,实现操作系统随身携带小慢哥的原创文章,欢迎转载目录 目标 准备工作 Step1. 清空分区,转换为GPT Step2. 安装win10 Step3. 压缩win10分区容量 Step4. 创建2个分区 Step5. 将bootcamp驱动放置到exFAT分区中 Step6. 将macos分区..._mac移动硬盘装双机系统

TransmittableThreadLocal解决线程池本地变量问题,原来我一直理解错了-程序员宅基地

文章浏览阅读14次。theme: cyanosishighlight: a11y-dark前言自从上次TransmittableThreadLocal框架作者评论我之后,我重新去看了下源码,终于在这个周天,我才把TransmittableThreadLocal解决线程池变量丢失的问题搞明白,而且发现我之前的认识有问题,久久孩子我之前是觉得,InheritableThreadLocal解决父子线...

Exchange 2016部署实施案例篇-03.Exchange部署篇(上)-程序员宅基地

文章浏览阅读366次。  距离上一篇《Exchange 2016部署实施案例篇-02.活动目录部署篇》博文更新已经过去快一周了,最近一直在忙项目上的事情和软考,整的真心有点身心俱疲啊,最近看了下上一篇博文不知道为什么访问量一直上不去,真心有点心寒啊。希望大家能多多提出宝贵意见,看看如何能让访问量上去。  废话就不多说了,开始今天的话题,Exchange的部署篇,我原定计划是把部署篇分上、下2个篇幅来写的,但最近发现好..._解决exchange2016部署先决条件

[译]使用MVI打造响应式APP(四):独立性UI组件-程序员宅基地

文章浏览阅读130次。原文:REACTIVE APPS WITH MODEL-VIEW-INTENT - PART4 - INDEPENDENT UI COMPONENTS作者:Hannes Dorfmann译者:却把清梅嗅这篇博客中,我们将针对如何 如何构建独立组件 进行探讨,我将阐述为什么在我看来 父子关系会导致坏味道的代码,以及为何这种关系是没有意义的。有这样一个问题时不时涌现在我的脑海中—— MVI...

tensorflow经过卷积及池化层后特征图的大小计算_池化层后特征图尺寸-程序员宅基地

文章浏览阅读662次。https://blog.csdn.net/qq_32466233/article/details/81075288_池化层后特征图尺寸

使用vue-echarts异步数据加载,不能重新渲染页面问题。_vue echart初始化渲染过后无法重新渲染-程序员宅基地

文章浏览阅读3.3k次。一、问题说明我是用的是官方示例中的这个饼状图。结果在应用到项目中后发现利用axios请求到的数据无法渲染到页面中去。并且其中value值已经改变。二、解决办法用$set改变value的值,并且重新绘制一遍表格。$set是全局 Vue.set 的别名。$set用法:向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为..._vue echart初始化渲染过后无法重新渲染

随便推点

Dev-C++ “to_string is not a member of std” error- 已解决_devc++ [error] 'to_string' is not a member of 'std-程序员宅基地

文章浏览阅读3.7k次。今天在用Dev-C++ 的时候遇到一个错误“to_string is not a member of std” error解决方法:设置编译语言为ISO C++11 在菜单栏的Tool -> Compiler Option_devc++ [error] 'to_string' is not a member of 'std

python的10款最好的IDE_pydea兼容的-程序员宅基地

文章浏览阅读1.1k次。Python 非常易学,强大的编程语言。Python 包括高效高级的数据结构,提供简单且高效的面向对象编程。Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE)。这些 Python 开发工具帮助开发者加快使用 Python 开发的速度,提高效率。高效的代码编辑器或者 IDE 应该会提供插件,工具等能帮助开发者高效开发的特性。这篇文章收集了一些对开发者非常有_pydea兼容的

python translate函数_Python:内置函数makestrans()、translate()-程序员宅基地

文章浏览阅读287次。一、makestrans()格式: str.maketrans(intab,outtab);功能:用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。注:两个字符串的长度必须相同,为一一对应的关系。注:Python3.6中已经没有string.maketrans()了,取而代之的是内建函数:bytearray...._python maketrance

Set集合详解-程序员宅基地

文章浏览阅读5.7k次,点赞9次,收藏14次。set集合的简介,它的特点和遍历方式。介绍了HashSet重复元素存储底层原理,LinkedHashSet,TreeSet排序方法,SortedSet获取集合值的方法_set集合

详解智慧城市排水管理系统整体方案_污水处理智慧管理系统案列-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏29次。随着城市规模的不断扩大和现代化程度的日益提高,城市排水管网越来越复杂,一些城市相继发生大雨内涝、管线泄漏爆炸、路面塌陷等事件,严重影响了人民群众生命财产安全和城市运行秩序。因此,摸清排水管网设施资产家底、建立排水管网地理信息系统,用现代化的技术手段对排水系统进行科学管理显得迫在眉睫。以时空信息为基础,充分利用感知监测网、物联网、云计算、移动互联网、工业控制和水力模型等新一代信息技术,全方位感..._污水处理智慧管理系统案列

详解NTFS文件系统_ntfs文件系统中,磁盘上的所有数据包括源文件都是以什么的形式存储-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏13次。上篇在详解FAT32文件系统中介绍了FAT32文件系统存储数据的原理,这篇就来介绍下NTFS文件系统。NTFS、用过Windows系统的人都知道,它是一个很强大的文件系统,支持的功能很多,存储的原理也很复杂。目前绝大多数Windows用户都是使用NTFS文件系统,它主要以安全性和稳定性而闻名,下面是它的一些主要特点。安全性高:NTFS支持基于文件或目录的ACL,并且支持加密文件系统(E_ntfs文件系统中,磁盘上的所有数据包括源文件都是以什么的形式存储

推荐文章

热门文章

相关标签