(22)以RS码为例说明信道编码AWGN信道的Eb/N0设置

文章目录

  • 前言
  • 一、编码Eb/N0与未编码Eb/N0及编码码率
  • 二、仿真代码
  • 三、仿真结果


前言

本文说明了如何为采用信道编码的通信链路设置Eb/N0(比特能量与噪声功率谱密度比)。


一、编码Eb/N0与未编码Eb/N0及编码码率

在通信系统仿真中,如果采用了FEC编码,则在设置AWGN信道Eb/N0时,需要考虑FEC编码码率R=K/N的影响。其中K为码字中信息码元的个数;N为码字的编码码元个数,也即信息码元数加校验码元数。

当通信链路中采用了信道编码, 编码的Eb/N0设置方法为:

CodedEbNo = UncodedEbNo + 10*log10(codeRate)

下面给出MATLAB仿真代码。

二、仿真代码

下面的MATLAB代码建立了一个“(15,9)RS码+8PSK”编码调制通信系统,显示了如何为采用信道编码的通信链路设置Eb/N0。

仿真中,通过设置不同的Eb/N0,绘制了系统的性能曲线。

N = 15;          % R-S codeword length in symbols
K = 9;           % R-S message length in symbols
num = 1e3;       % R-S codeword number in symbols
M = 8;           % Modulation order% Construct a (15,9) Reed-Solomon encoder and a 8-PSK modulator.
rsEncoder = comm.RSEncoder('CodewordLength',N,'MessageLength',K,'BitInput',true);
pskModulator = comm.PSKModulator('ModulationOrder',M,'BitInput',true);% Create the corresponding Reed-Solomon decoder and 8-PSK demodulator objects.
rsDecoder = comm.RSDecoder('CodewordLength',N,'MessageLength',K,'BitInput',true);
pskDemodulator = comm.PSKDemodulator('ModulationOrder',M,'BitOutput',true);% Calculate the Reed-Solomon code rate based on the ratio of message symbols to the codeword length.
codeRate = K/N;
bitsPerSymbol = log2(M);% Specify the uncoded Eb/No in dB. Convert the uncoded Eb/No to the corresponding coded Eb/No using the code rate.
UncodedEbNo = 0:2:16;
CodedEbNo = UncodedEbNo + 10*log10(codeRate);% Construct an AWGN channel taking into account the number of bits per symbol. Set the EbNo property of channel to the coded Eb/No.
channel = comm.AWGNChannel('BitsPerSymbol',bitsPerSymbol);
% channel.EbNo = CodedEbNo;% Set the total number of errors and bits for the simulation.
% For accuracy, the simulation should run until a sufficient number of bit errors are encountered.
% The number of total bits is used to ensure that the simulation does not run too long.
totalErrors = 100;
totalBits = 1e6;% Construct an error rate calculator System object and initialize the error rate vector.
errorRate = comm.ErrorRate;
ber = zeros(length(UncodedEbNo),1);for R = 1:length(UncodedEbNo)reset(errorRate);errorVec = zeros(3,1);channel.EbNo = CodedEbNo(R);% Run the simulation to determine the BER. while errorVec(2) < totalErrors && errorVec(3) < totalBits% Generate random bitsdataIn = randi([0,1],num*K,1);% Use the RS (15,9) encoder to add error correction capabilitydataEnc = rsEncoder(dataIn);% Apply 8-PSK modulationtxSig = pskModulator(dataIn);% Pass the modulated data through the AWGN channelrxSig = channel(txSig);% Demodulate the received signaldemodData = pskDemodulator(rxSig);% Decode the demodulated data with the RS (15,9) decoderdataOut = rsDecoder(demodData);% Collect error statisticserrorVec = errorRate(dataIn,demodData);end% Display the resultant bit error rate.ber(R) = errorVec(1);
endfigure()
semilogy(UncodedEbNo,ber,'ro-','LineWidth',1.5);
grid on;
xlabel('UncodedEbNo(dB)');
ylabel('BER');
title('8-PSK over AWGN Channels with RS Coding');

三、仿真结果

仿真结果如下:

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1557835.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

10.8摩尔学习知识点

今天学习获取数据 在摩尔云平台找到要修改的主视图&#xff0c;然后点击操作功能&#xff0c;点击新增&#xff0c;直接输入名字获取数据&#xff0c;然后&#xff0c;显示顺序15&#xff0c;显示是&#xff0c;点击确定&#xff0c;然后就是自定义类上面输入创建的类名&#…

怎么在抖音直播间录屏?主播会知道吗?录屏软件推荐

在抖音直播间录屏&#xff0c;主播通常不会收到直接通知提示某个观众正在录屏。在抖音直播间录屏&#xff0c;主播通常是不知道的。抖音平台没有为主播提供查看观众录屏行为的相关功能或提示&#xff0c;所以从平台功能角度来说&#xff0c;主播无法直接察觉观众的录屏操作。 然…

『网络游戏』窗口基类【06】

创建脚本&#xff1a;WindowRoot.cs 编写脚本&#xff1a; 修改脚本&#xff1a;LoginWnd.cs 修改脚本&#xff1a;LoadingWnd.cs 修改脚本&#xff1a;ResSvc.cs 修改脚本&#xff1a;LoginSys.cs 运行项目 - 功能不变 本章结束

职场中的人情世故,你懂了多少?

职场如战场&#xff0c;稍有不慎&#xff0c;满盘皆输。 职场如江湖&#xff0c;不是打打杀杀&#xff0c;而是人情世故。 成年人的世界里没有“容易”二字&#xff0c;我们也需要懂得哪些人情世故和。 职场上的各种光怪陆离现象&#xff0c;有很多职场人吐槽&#xff1a;“…

以后再也不要说程序员不能拿诺贝尔了

当地时间10月8日&#xff0c;瑞典皇家科学院宣布&#xff0c;将2024年诺贝尔物理学奖授予美国普林斯顿大学的约翰霍普菲尔德&#xff08;John J. Hopfield&#xff09;和加拿大多伦多大学的杰弗里辛顿&#xff08;Geoffrey E. Hinton&#xff09;&#xff0c;以表彰他们“为推动…

基于SSM车位租赁系统【附源码】

基于SSM车位租赁系统 效果如下&#xff1a; 注册页面 首页展示 车位租赁订单展示 车位列表页面 公告信息管理页面 公告类型管理界面 研究背景 随着经济的持续增长和城市化进程的加速&#xff0c;土地资源变得日益紧缺&#xff0c;停车难问题已成为许多城市面临的共同挑战。随…

力扣LeetCode-链表中的循环与递归使用

标题做题的时候发现循环与递归的使用差别&#xff1a; 看两道题&#xff1a; 两道题都是不知道链表有多长&#xff0c;所以需要用到循环&#xff0c;用到循环就可以把整个过程分成多个循环体&#xff0c;就是每一次循环要执行的内容。 反转链表&#xff1a; 把null–>1…

OpenFegin

文章目录 一、OpenFegin是什么&#xff1f;二、基本使用三、超时重试机制4.自定义超时重传机制五、底层实现 一、OpenFegin是什么&#xff1f; OpenFeign的全称为Spring Cloud OpenFeign(下文简称OpenFeign),是Spring Cloud团队开发的一款基于 Feign的框架&#xff0c;声明式W…

『网络游戏』Tips弹窗队列【10】

修改脚本&#xff1a;DynamicWnd.cs 修改脚本&#xff1a;GameRoot.cs 运行项目 - Tips提示消息按顺序依次弹出显示 修改代码&#xff1a;GameRoot.cs 修改代码&#xff1a;LoginSys.cs 运行项目 设置初始化函数 将CreateWnd设置为隐藏 运行项目 本章结束

Python爬虫之正则表达式于xpath的使用教学及案例

正则表达式 常用的匹配模式 \d # 匹配任意一个数字 \D # 匹配任意一个非数字 \w # 匹配任意一个单词字符&#xff08;数字、字母、下划线&#xff09; \W # 匹配任意一个非单词字符 . # 匹配任意一个字符&#xff08;除了换行符&#xff09; [a-z] # 匹配任意一个小写字母 […

【斯坦福CS144】Lab3

一、实验目的 完成 TCPSender 的四个接口。 二、实验内容 在该实验中&#xff0c;我们需要完成 TCPSender 的以下四个接口&#xff1a; **fill_window&#xff1a;**TCPSender 从 ByteStream 中读取数据&#xff0c;并以 TCPSegement 的形式发送&#xff0c;尽可能地填充接…

多端同步的收银系统源码

随着经济的不断发展&#xff0c;很多门店越来越趋向连锁品牌化&#xff0c;收银系统自然也成为很多连锁门店必不可少的软件工具。希望通过一套软件可以帮助门店解决门店线下销售、会员管理、连锁多门店管理、线下线上一体化、商品库存管理等难题实现降本增效&#xff0c;为了方…

【C++】map详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

ESP8266使用AT指令完成MQTT功能

ESP8266使用AT指令完成MQTT功能 在esp8266设备中烧录安信可的AT固件之后&#xff0c;进行AT指令完成信息发布&#xff0c;并最终实现在Homeassistant中发布传感器并设置传感器状态。 一、基础指令 以下是完整的步骤和对应的AT指令&#xff1a; 1. 配置ESP8266为Station模式 …

10.8学习

1.CAP ★一致性&#xff08;2PC、3PC、Paxos、Raft&#xff09; ●强一致性&#xff1a;数据库一致性&#xff0c;牺牲了性能 ACID&#xff1a;原子性、一致性、隔离性、持久性 ●弱一致性&#xff1a;数据库和缓存&#xff0c;延迟双删、重试 ●单调读一致性&#xff1a;…

[面试] java开发面经-1

前言 目录 1.看到你的简历里说使用Redis缓存高频数据&#xff0c;说一下Redis的操作 2.说一下Redis的缓存击穿、缓存穿透、缓存雪崩 3.你的项目中使用了ThreadLocal&#xff0c;那么当有两个请求同时发出时&#xff0c;会怎么处理&#xff0c;可以同时处理两个请求吗 4.使用…

01_InfluxDb

InFluxDb 概览课程地址Flux语言安装使用场景底层原理-数据结构数据价值热数据冷数据 数据只写不改InFluxDb 1.8 生态InFluxDb查询语言 TelegrafChronograph_画面插件Kapacitor InFluxDb 2.2 生态InFluxDb查询语言 Telegrapf 集群集群方案 概览 时序数据库,对时序场景有特别的优…

java web gis 快速搭建开发环境_服务端搭建

前言: 链接:https://pan.baidu.com/s/15i7FxthazW0J87D5jWh5ng?pwd32nd 提取码:32nd 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 Java 环境 jdk 1.8 &#xff1b; maven ; 中间件: redis 数据库: postgres 1.4 ; postgis 代码管理: git 客户端 开发工…

【每日一题 | 24.10.8】确定字符串是否是另一个的排列

1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 上期回顾:【每日一题 | 24.10.7】Fizz Buzz 经典问题 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;每日一题 1. 题目 确定字符串是否是另一个的排列 2. 解题思路 题目核心要求&#xff1a;理解字符串排列…

使用最小二乘法画噪声数据的近似曲线

文章目录 问题MATLAB代码验证数据1验证数据2 问题 已知有系列含有噪声的数据&#xff08;x , y&#xff09;用最小二乘法计算m和b。(ymxb) MATLAB代码 disp(This promgram perform a leastsquares fit of an); disp(input data set to a straight line.); n_points input(E…