信道编码【编码、纠错检错】

news2024/12/25 1:43:40

差错控制的基本概念--数字信号在传输过程中,由于信道传输特性不理想及加性噪声的影响,不可避免地会发生错误。

可通过以下三方面的措施来减小误码率:1)提高信道容量;2)降低编码效率;3)增加码长。差错控制不仅广泛应用于各种通信系统中,而且在计算机、磁记录于存储设备中也得到大量的应用。

扰离散信道的编码定理:

       扰离散信道编码定理(Channel Coding Theorem)是信息论中的基本定理之一,其表述了在扰动信道条件下,通过编码可以实现错误概率任意小的通信的可能性。

       该定理由香农在其经典的《通信的数学理论》中提出。定理的核心思想是,在给定的信道容量下,存在一种编码方案,通过添加冗余信息,使得信息可以以任意小的错误概率进行传输。

        具体而言,假设信道的容量为C,那么对于任意小的正数ε,存在一种编码方式,使得在编码后的数据长度大于C时,错误概率小于ε。

        扰离散信道编码定理的意义在于,通过适当的编码和解码算法,我们可以在有限的信道容量下实现可靠的信息传输。这为通信系统设计和研究提供了重要的理论基础。

        需要注意的是,扰离散信道编码定理是基于理想条件的理论结果,并假设信道状态信息是已知的。在实际应用中,由于通信环境的复杂性和信道特性的不确定性,实际的编码和解码算法通常需要结合信道估计、纠错编码、调制等技术,以尽可能地接近理论的极限。

最小码距和检错:

         在信息码序列中加监督码元,监督码和信息码之间存在一种逻辑关系。因此,收端可以利用这种逻辑关系发现或纠正存在的错码。

一般来说,监督码越多,检、纠错能力越强。用降低传输速率换取传输可靠性的提高。

不同的编码方法,有不同的检错或纠错能力。

目标:监督码元要少,检、纠能力要强。

分组码:将信息码分组,为每组信息码后附加若干监督码元形成的码集合。

特点:分组码中的监督码元仅监督本码组中的信息码元。

符号(n,k),k是码组中信息码元的数目,n为码组长度,r=n-k,为码组中监督码元的数目。

结构:

 

码组重量:码组中“1”的数目

码组d:两个码组对应位上不同的码元个数,称为汉明距离。

最小码距d0:码集合中任意两两码组间距离的最小值。

码距与码集合检、纠错能力的关系:

检测e个错吗,要求最小码距d0>=e+1

纠正t个错吗,要求最小码距d0>=2t+1

纠正t个错码、同时检测e个错码,要求最小码距d0>=e+t+1

可通过监督矩阵来判断是否出错,通过生成矩阵来编码。

【监督矩阵、生成矩阵的知识较多,且较容易查找,这里不介绍】

常用检错码:

常用的检错码包括奇偶校验码、循环冗余校验码、海明码、卷积码等等。

1. 奇偶校验码:是一种简单的检错码,通过在数据中增加一个奇偶位来实现错误检测。奇偶校验码适用于单比特错误的检测,但无法纠正错误。

2. 循环冗余校验码(CRC):是一种广泛使用的检错码,常用于数据通信和存储系统中。CRC通过生成多项式来计算校验码,并将校验码附加到原始数据中。接收端根据接收到的数据和校验码重新计算校验码,如果两者不一致,则表明数据存在错误。CRC能够有效检测多比特错误。

3. 海明码:是一种能够检测和纠正单比特错误的编码方案。海明码通过在原始数据中增加冗余比特,使得接收端可以检测到并纠正单比特的错误。海明码的纠错能力取决于冗余比特的数量。

4. 卷积码:是一种线性移位寄存器编码的纠错码。卷积码为每个输入比特添加一个或多个冗余比特,以实现错误检测和纠正。卷积码的性能优秀,广泛应用于无线通信系统。

这些是常见的检错码,每种检错码在不同的应用场景下有着不同的优缺点。在实际应用中,根据具体需求可以选择适合的检错码来保证数据的可靠传输和存储。

卷积码:

卷积码是伊莱亚斯于1955年提出的一种非分组码。

卷积码每个码组中的监督码不但与本码组的信息码有关,还与前边(N-1)个码组中的信息码有关。

设一个码组的码长为n,n×N称为约束长度,N称为约束度。卷积码的纠错能力也随N的增大而增强,卷积码是具有记忆性。一般用(n,k,N) 表示卷积码。

卷积码的k和n值可以为比较小的值,编、译码延时小。在相同的传信率和设备复杂度的条件下,卷积码的性能一般优于线性分组码。

   例:(3,1,2)卷积码

卷积码的表示方法有解析表示、图解表示。

i)解析表示---当第1个信息码元m1输入时,输出为,y11=m1,y12=m1,y13=m1;

当第2个信息码元m2输入时,输出为y21=m2,y22=m2,y23=m1+m2;......

上面各符号的第1为下表是码元所在的码组编号,第2位下标表示码元在码组中的位置。

把上面的表达式写成矩阵的形式:

卷积码的生成矩阵和监督矩阵式有头无尾的半无穷矩阵,不便于研究,但也有规律可循。

ii)图解表示

树状图-------

网格图-------把码树中具有相同状态的节点合并在一起;码树中的上支路(输入0)用实线表示,下支路(输入1)用虚线表示;支路上标注的码元为输出比特。

网格图中的状态,通常有2^(n-1)种状态。从第个节点开始,图形开始重复,且完全相同。

 状态图---------取出达到稳定状态后两个节点间的一段网格图,即得到状态转移图和最简的状态转移图,称之为卷积码状态图。

两种译码方法:

建立在代数译码基础上的门限译码,又称为大数逻辑译码。

最大似然译码,又称为概率译码。

维特比译码属于最大似然译码。

维特比译码算法简称VB算法,是1967年由Viterbi提出。

基本思路:

把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L组信息比特,发送的序列组合有2^kl个,需要存储所有这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数较大时,译码器将变得非常复杂。

       VB算法进行了简化,成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的条路径(序列),是接收一段,计算和比较一段,选择一段有最大似然可能的码段,从而达到整个码序列是一个有最大似然值的序列。

如下图的卷积码编码器

       VB算法进行了简化,成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的条路径(序列),而是接收一段,计算和比较一段,选择一段有最大似然可能的码段,从而达到整个码序列是一个有最大似然值的序列。对于(n,k,N) 卷积码,首先考察接收序列的前nN位。比较网格图中可能的路径和接收序列之间的汉明距离,保留到达每个状态的两条路径中汉明距离小的一条路径,称为幸存路径。

继续考察接收序列中的后继n位,在增加的一级可能的路径中,通过比较汉明距离保留幸存路径。如此继续进行。

循环码是线性分组码中一种重要的编码。它是在严密的代数理论基础上建立起来的。 其编码和解码不太复杂,但检(纠)错的能力较强。循环码除了具有线性码的一般性质外,还具有循环性。

(其中有码的多项式、码多项式的模运算、余式等,根据生成矩阵和g(x)可以计算得到传输的循环码)

用于检错: 

把接收码组R(x)除以生成多项式g(x)。

当传输中未发生错误时,接收码组与发送码组相同,即R(x)=T(x),故接收码组R(x)必定能被g(x)整除。

若码组在传输中发生错误,则R(x)≠T(x),R(x)被g(x)除时

可能除不尽而有余项,即有R(x)/g(x)=Q(x)+r(x)/g(x)

当错码数超过了这种编码的检错能力时,有错码的接收码组也可能被g(x)整除,这时的错码就不能检出了。这种错误称为不可检错误。

用于纠错:

要求每个可纠正的错误图样必须与一个特定余式有一一对应关系。可按下述步骤进行:

(1)用生成多项式g(x)除接收码组R(x)=T(x)+E(x),得出余式r(x);

(2)按余式r(x)用查表的方法或通过某种运算得到错误图样E(x)。

(3)从R(x)中减去E(x),便得到已纠正错误的原发送码组T(x);

上述运算第(2)步较复杂,并且在计算余式和决定E(x)的时候需要把整个接收码组R(x)暂时存储起来

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

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

相关文章

Binder系列--ServiceManager的启动

ServiceManager的启动 hongxi.zhu Android 13 主要流程: 1. 启动ServiceManager进程 ServiceManager是由init(pid 1)进程启动的 system/core/rootdir/init.rc on init......# Start essential services.start servicemanager //framework层使用start hwservic…

Linux | Ubuntu卸载QQ

Linux | Ubuntu卸载QQ 终端输入: dpkg -l| grep qq如下图,找到QQ文件: 删除命令: sudo apt-get --purge remove 文件名在终端输入: sudo apt-get --purge remove libqqwing2v5:amd64如下图删除成功

【Java程序设计实训】基于B/S架构的MyShop商城

MYSHOP商城 实验目的实验概述系统功能概述Myshop 商城概述系统开发分析功能列表系统用例图系统活动图 数据库设计运作界面展示用户管理模块新用户注册用户登录商城首页与用户退出 商品模块商品分页展示查看商品详情信息 购物车模块空购物车页面加入商品到购物车 订单模块提交订…

4.32UDP通信实现 4.33广播 4.34组播 4.35本地套接字通信

4.32UDP通信实现 ![在这 udp_client.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <arpa/inet.h>int main() {// 1.创建一个通信的socketint fd socket(PF_INET, SOCK_DGRAM, 0);if(fd -1) {…

springboot项目外卖管理 day08-缓存优化

文章目录 一、缓存优化问题说明环境搭建导入maven坐标配置yml文件设置序列化器&#xff0c;编写配置类 缓存短信验证码缓存菜品数据实现思路 SpringCacheSpring Cache介绍Spring Cache常用注解Spring Cache使用方式 缓存套餐数据实现思路 一、缓存优化 问题说明 环境搭建 导入…

【Framework】startService启动流程

前言 启动service有两种方式&#xff1a;startService和bindService。 这一篇先讲startService&#xff0c;读者如果只想看流程图&#xff0c;可以直接跳到总结。 1. ContextImpl 代码路径&#xff1a;frameworks\base\core\java\android\app\ContextImpl.java 1.1 startServ…

SHA-256算法及示例

1. 引言 SHA-256&#xff08;安全哈希算法&#xff0c;FIPS 182-2&#xff09;是密码学哈希函数&#xff0c;其摘要长度为256位。SHA-256为keyless哈希函数&#xff0c;即为MDC&#xff08;Manipulation Detection Code&#xff09;。【MAC消息认证码有key&#xff0c;不是key…

【数据库】外键的作用

前言 说到外键&#xff0c;一般就会牵扯出约束。不谈约束&#xff0c;起始外键就是一个普通的字段&#xff08;Column&#xff09;&#xff0c;起到一个关联的作用。 先把约束放一边&#xff0c;看看外键有哪些作用。 建立表中记录的一对一的关系 学生表&#xff1a; 手机表…

C++引用计数

文章目录 1. 什么是引用计数2. 引用计数的实现3. 示例代码 1. 什么是引用计数 引用计数&#xff08;reference count&#xff09;的核心思想是使用一个计数器来标识当前指针指向的对象被多少类的对象所使用&#xff08;即记录指针指向对象被引用的次数&#xff09;。它允许有多…

Linux--查找文件指令:find

语法&#xff1a; find pathname -name 文件名 示例&#xff1a; 从根目录下开始查找名字中带file.txt文件的路径

C++思维导图以及作业

定义一个命名空间Myspace&#xff0c;包含以下函数&#xff1a;将一个字符串中的所有单词进行反转&#xff0c;并输出反转后的结果。例如&#xff0c;输入字符串为"Hello World"&#xff0c;输出结果为"olleH dlroW"&#xff0c;并在主函数内测试该函数。 …

战略书籍排行榜前五名

战略管理对企业的重要性不言而喻。有效的战略管理可以帮助企业确定未来的方向和目标、制定长期发展规划、提高企业的竞争力和获得市场份额。本文推荐的这5本优秀的战略管理类书籍&#xff0c;每一本都有其独特的思想和实践价值&#xff0c;值得企业管理者借鉴和学习。 战略书籍…

Leetcode---351周赛

周赛题目 2748. 美丽下标对的数目 2749. 得到整数零需要执行的最少操作数 2750. 将数组划分成若干好子数组的方式 2751. 机器人碰撞 一、美丽下标对的数目 这题没什么好说的&#xff0c;按照题目的要求直接暴力求解&#xff0c;代码如下 bool gcd(int x,int y){if(x1||y1)…

vue父子组件之间相互控制传值,子组件使用$parent直接控制父组件的值

父子组件之间相互控制传值&#xff0c;子组件控制父组件的值 需求概述 父组件在提交表单后&#xff0c;弹框进行提示&#xff0c;子组件是一个弹框。 vue版本 v2.x 实现原理 在父组件内建立控制器isShowModal&#xff0c;使用v-if来控制子组件的显示与隐藏。在子组件通过…

DAY39——动态规划part2

1.考虑障碍在起点和终点的特殊状况&#xff0c;可直接返回0 2.判断是否存在障碍物&#xff1a;初始化时需要设置障碍物后的坐标为0

常见存储引擎

TiKV 简介 TiKV 是一个分布式事务型的键值数据库&#xff0c;提供了满足 ACID 约束的分布式事务接口&#xff0c;并且通过Raft协议保证了多副本数据一致性以及高可用。TiKV 作为 TiDB 的存储层&#xff0c;为用户写入 TiDB 的数据提供了持久化以及读写服务&#xff0c;同时还存…

Spring BeanFactory FactoryBean的区别?

文章目录 前言一、BeanFactory二、FactoryBean 前言 面试中被问到过Spring BeanFactory FactoryBean的区别&#xff1f;当时没答上来&#xff0c;感觉这就是一个文字游戏&#xff0c;后面仔细的了解了一下&#xff0c;分享给大家。 一、BeanFactory 在 Spring 中最核心的就是…

GDB 断点管理

1、b 设置断点 usage 1: b 函数名 usage 2: b 文件名:行号 2、rb 函数名关键字 &#xff1a; 所有带有这个关键字的函数名都设置为断点 (gdb) rb dkauth Breakpoint 7 at 0x34187ae0: file /home/jintao/cvf/apps/cvf/services/dkauth/src/dkauth.c, line 58. void dkauth_…

Python之花舞盛宴:探索列表与元组之美与妙用

前言 在Python编程世界中&#xff0c;列表和元组是两个最常用的数据结构之一。无论是初学者还是经验丰富的开发者&#xff0c;对于这两个数据类型的掌握都至关重要。 列表和元组都是用于存储多个值的容器&#xff0c;但它们在性质和特性上有所不同。列表是可变的&#xff0c;…

VMIC-pci-5565反射内存的优势

优势&#xff1a; &#xff08;1&#xff09;实现远程互连的能力 随着仿真实验复杂度的提高&#xff0c;需要多楼宇多试验室间设备的远程互连&#xff0c;通过单模光纤及光纤HUB将远距离的试验室设备进行连接&#xff0c;单模光纤支持的传输距离可达20km。对于距离300m以内的试…