【通信原理 入坑之路】—— 信息论部分 线性分组码各种计算的解法

本文主要是介绍【通信原理 入坑之路】—— 信息论部分 线性分组码各种计算的解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在开始本文之前,我们先给出下面的几个名词,他们将会在后续的分析中反复出现:
【1】生成矩阵 【2】监督矩阵 【3】许用码字 【4】最小汉明距离 【5】伴随式 【6】错误图样

我们先重点看看接收端中,上面这些名词的关联:
在这里插入图片描述
首先,当我们接收到码字 y 时,我们可以通过监督矩阵计算出伴随式 S,通过伴随式,我们又可以得到错误图样,错误图样的意义就是它能够指出接收码字中哪一位出错了。从而去修改对应位置的码字。【监督矩阵的监督作用可以通过 : H ⋅ C T = 0 H\sdot C^T=0 HCT=0表现出来

下面我们具体看看如何通过监督矩阵得到所有的伴随式,也就是过程 a:

  1. 假设我们现在计算得到了监督矩阵H: H = [ 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 ] H = \begin{bmatrix} 1 & 1&0&1&0&0&0\\ 0&1&1&0&1&0&0\\ 1&1&1&0&0&1&0\\ 1&0&1&0&0&0&1 \end{bmatrix} H=1011111001111000010000100001
    那么伴随式S就是H 矩阵各列的组合(异或运算)。比如说,我们现在选择H的第1,2列进行异或,就会得到其中一个伴随式: S = [ 0 1 0 1 ] S = \begin{bmatrix} 0&1&0&1\end{bmatrix} S=[0101];再比如说我们如果只选择H的第6列进行异或,也可以得到另一个伴随式: S = [ 0 0 1 0 ] S = \begin{bmatrix} 0&0&1&0\end{bmatrix} S=[0010]

下面我们具体看看如何通过伴随式求出错误图样,以及如果通过错误图样反推伴随式:

  1. 如何通过伴随式求出错误图样?结果可能是不唯一的。由于我们刚刚不是选取了H的第1,2列异或得到了一个伴随式: S = [ 0 1 0 1 ] S = \begin{bmatrix} 0&1&0&1\end{bmatrix} S=[0101]吗,所以上图的 b 过程就是说你伴随式S是选取了H的哪些列计算得到了,那么错误图样 e 就是在对应的位置标记为“1”,否则标记为“0”。所以,这个伴随式对应的错误图样就是 [ 1 1 0 0 0 0 0 ] \begin{bmatrix} 1&1&0&0&0&0&0\end{bmatrix} [1100000],但是还有一种可能性: S = [ 0 1 0 1 ] S = \begin{bmatrix} 0&1&0&1\end{bmatrix} S=[0101]也可以是H矩阵的第5,7两列的组合。因此,错误图样还可能是: [ 0 0 0 0 1 0 1 ] \begin{bmatrix} 0&0&0&0&1&0&1\end{bmatrix} [0000101]

  2. 而反过来通过错误图样找S,结果就是唯一的了。比如说错误图样: [ 1 1 0 0 0 0 0 ] \begin{bmatrix} 1&1&0&0&0&0&0\end{bmatrix} [1100000],那么对应的伴随矩阵就只能是 S = [ 0 1 0 1 ] S = \begin{bmatrix} 0&1&0&1\end{bmatrix} S=[0101]

而可纠正的错误图样,指的就是错误最少的那种情况。


说了那么多,那么生成矩阵和监督矩阵到底怎么求呢?我们记住下面的关系: Q = [ I ∣ P ] Q = \begin{bmatrix} I|P\end{bmatrix} Q=[IP]
H = [ P T ∣ I ] H = \begin{bmatrix} P^T|I\end{bmatrix} H=[PTI]

上述都是系统的生成矩阵和监督矩阵,如果题目给出来的矩阵不是系统的(也就是没有单位矩阵的),那么大部分情况可以通过行的互换得出。


求出了监督矩阵,我们就来看看最小汉明距离 d m i n d_{min} dmin 如何计算。其实 d m i n d_{min} dmin 就是看H矩阵中最少有多少列是线性相关的。还是以刚刚的H为例:
H = [ 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 ] H = \begin{bmatrix} 1 & 1&0&1&0&0&0\\ 0&1&1&0&1&0&0\\ 1&1&1&0&0&1&0\\ 1&0&1&0&0&0&1 \end{bmatrix} H=1011111001111000010000100001

我们发现,任意的3列都无法表示成线性关系,但是其中第5,6,7列的和恰好等于第3列,也就是说最少4列是可以表示成线性相关的,所以 d m i n = 4 d_{min} = 4 dmin=4


我们再来看看许用码字的求法:

我们通过 (n, k) 码的形式【即:n位的码字里面有k个信息位】那么我们就把k个信息位的所有组合都列出来,然后分别跟生成矩阵相乘,就可以得到许用码字 C C C了。

其中,我们也可以通过生成矩阵的维度确定 n, k:生成矩阵的维度:(k, n).


另外还有一种题型:

已知某线性分组码的码长为 10 10 10,如果要想该线性码能够纠正两位随机错误,问需要多少位的监督位?

首先,我们明确这样一个性质:监督位如果有 x x x 位,那么其伴随式就会有: 2 x 2^{x} 2x种。下面我们回到题目:题目说想要线性码能够纠正两位随机错误,这个随机错误其实就是通过错误图样来反应的。比如一个 ( 7 , 4 ) (7,4) (7,4) 码,如果错误图样是 [ 0001000 ] [0 0 0 1 0 0 0] [0001000],那么就可以判断是第四位出错了。

接下来我们看一下如果是出现两位错误的时候,错误图样有多少种情况:根据排列组合的知识,从10位里面选出2位作为错误位,那么有: C 10 2 = 45 C_{10}^{2} = 45 C102=45种情况。然后只错一位的情况一共有: C 10 1 = 10 C_{10}^1=10 C101=10种。因此,错两位及以下的错误图样一共有: 45 + 10 = 55 45+10=55 45+10=55种情况。那么因此,我们所选取的监督位就应该使得线性码所产生的错误图样数比55大。由于 2 6 = 64 > 55 > 2 5 = 32 2^6=64>55>2^5=32 26=64>55>25=32,因此,监督位的个数应该是6.

这篇关于【通信原理 入坑之路】—— 信息论部分 线性分组码各种计算的解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/829477

相关文章

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

Python中经纬度距离计算的实现方式

《Python中经纬度距离计算的实现方式》文章介绍Python中计算经纬度距离的方法及中国加密坐标系转换工具,主要方法包括geopy(Vincenty/Karney)、Haversine、pyproj... 目录一、基本方法1. 使用geopy库(推荐)2. 手动实现 Haversine 公式3. 使用py