【信道编码】2 卷积码、状态转移图、状态转移表、网格表示和码字路径

【信道编码】2 卷积码、状态转移图、状态转移表、网格表示和码字路径

  • 写在最前面
  • 例题先行,原理随后
    • 示例:输入为01011100
      • 状态转移表
      • 状态转移图
  • 卷积码的原理
    • 原理与结构
    • 工作流程
    • 误差纠正
  • (2,1,2)卷积编码器
    • 工作原理
    • 结构和示例
      • 状态转移和输出表格
      • 状态图的构建步骤
      • 状态图的绘制
  • 状态转移图
    • 法1步骤以绘制状态转移图
    • 法2卷积码状态转移
  • 网格表示和码字路径(通过网格图寻找最匹配的路径)
      • 网格表示(Trellis Diagram)
        • 构建步骤
        • 功能
      • 码字路径
        • 解码过程
    • 例题
  • 应用


请添加图片描述

🌈你好呀!我是 是Yu欸
🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

写在最前面

肖丽霞老师的《信道编码》课程笔记。

经历了chatgpt的自信胡言乱语,输出y1和输出y2弄混,公式弄错
终于,理解并做对了orz
理解原理后,确实很简单

感谢书琪宝,yyds

重点原理】对于(2,1,2)卷积编码器,连接逻辑如下:
(注意看图,三个指向的对应输出2)

  • 输出1: 输入 ⊕ 寄存器2
  • 输出2: 输入 ⊕ 寄存器1 ⊕ 寄存器2

参考:https://blog.csdn.net/tomatomatodo/article/details/121917054

在这里插入图片描述

请添加图片描述

例题先行,原理随后

示例:输入为01011100

状态转移表

在这里插入图片描述

状态转移图

在这里插入图片描述

卷积码的原理

请参考:https://blog.csdn.net/weixin_46258766/article/details/119060965

在这里插入图片描述

卷积码是一种错误纠正码,广泛用于通信系统中以增强数据传输的可靠性,尤其是在有噪声的信道中。卷积码通过在发送的数据中添加冗余信息来实现,这样即使在接收端接收到部分错误的数据,也能通过额外的冗余信息进行错误检测和纠正。

原理与结构

卷积码的核心原理是使用移位寄存器和若干逻辑门(通常是异或门)来处理输入的数据比特。下面是卷积码的一些基本组成部分和工作原理:

  1. 移位寄存器:输入的数据比特序列被送入一系列的移位寄存器。这些寄存器按照时钟信号的节拍逐步移动数据,每个时钟周期将数据向前推进一位。

  2. 逻辑门(通常是异或门):移位寄存器的输出被送到一组逻辑门中,这些门根据预设的生成多项式进行操作。异或门是最常用的逻辑门,它根据特定的连接方式结合多个寄存器的输出。

  3. 生成多项式:在卷积码中,生成多项式定义了每个输出位是如何从输入位及其历史(即寄存器中的位)中生成的。这些多项式决定了卷积编码器的连接方式和输出。

  4. 码率:卷积码的码率定义为 ( \frac{k}{n} ),其中 ( k ) 是每次输入的比特数(通常为1),( n ) 是每次输出的比特数。码率较低意味着更高的冗余度,通常能提供更强的错误纠正能力。

  5. 约束长度:约束长度是指计算每个输出比特所需要的输入比特的最大数量,它等于移位寄存器的大小加一。约束长度越大,编码器的记忆能力越强,纠错能力通常越好,但复杂性和延时也会增加。

工作流程

  • 输入比特被序列地送入移位寄存器。
  • 根据生成多项式,移位寄存器中的比特与逻辑门相连,生成输出比特。
  • 输出比特包含了输入信息及其历史的信息,从而形成了冗余。

误差纠正

在接收端,卷积码通常使用维特比算法(一种最大似然译码算法)进行译码。这种算法可以高效地找到最可能产生观测到的接收序列的发送序列。维特比算法通过在可能的状态转移图中寻找一条最佳路径(即最小错误路径)来工作。

总之,卷积码通过在发送端添加冗余信息,并在接收端使用复杂的译码技术,有效地提高了数据传输的可靠性,尤其是在信道条件恶劣的环境中。这使得卷积码在无线通信、卫星通信和数据存储等多种应用中非常有价值。

(2,1,2)卷积编码器

(2,1,2)卷积编码器是一种典型的卷积编码器,常用于错误控制编码中。
这种编码器的参数(2,1,2)表示输出位数为2,输入位数为1,以及编码器内部的存储器单元数为2。

工作原理

  1. 输入位数(1):这意味着每个时钟周期编码器接收一个比特。
  2. 输出位数(2):每个输入比特会被编码成两个输出比特。这种从1比特到2比特的转换能够引入冗余,从而提高信号在噪声环境下的可靠性。
  3. 存储器单元数(2):卷积编码器有两个存储单元,这些单元存储过去接收的输入比特。这种记忆特性使得输出比特不仅依赖于当前输入比特,还依赖于之前的一或多个输入比特。

结构和示例

卷积编码器的典型结构包括几个移位寄存器和一些逻辑门,通常是异或门(XOR)。例如,一个(2,1,2)卷积编码器可能会有以下的连接方式:

  • 第一个输出比特是输入比特与第一个寄存器内容的异或结果。
  • 第二个输出比特可能是输入比特、第一个寄存器和第二个寄存器内容的异或结果。

状态转移和输出表格

一个(2,1,2)卷积编码器由于有两个寄存器,存在4个可能的状态,加上二进制输入,会产生8种可能的输入/状态组合。

对于(2,1,2)卷积编码器,连接逻辑如下:

  • 输出1: 输入 ⊕ 寄存器2
  • 输出2: 输入 ⊕ 寄存器1 ⊕ 寄存器2

这里的每一步,输出都是基于当前输入和之前状态的组合,通过逻辑门(如异或门)计算得到。

下面是如何标记这些转移:

  • 状态00
    • 输入0:输出00,转移到状态00
    • 输入1:输出11,转移到状态01
  • 状态01
    • 输入0:输出11,转移到状态10
    • 输入1:输出01,转移到状态11
  • 状态10
    • 输入0:输出01,转移到状态00
    • 输入1:输出10,转移到状态01
  • 状态11
    • 输入0:输出10,转移到状态10
    • 输入1:输出11,转移到状态11

基于前面的分析,我们可以为每个状态定义两个转移:

当前状态 (寄存器2 寄存器1)输入输出 (输出1输出2)下一状态 (寄存器2 寄存器1)
0000000
0011110
0101000
0110110
1000101
1011011
1101101
1110011

状态图的构建步骤

  1. 定义节点:每个节点代表一个状态(例如,00, 01, 10, 11),状态代表寄存器的当前值。
  2. 定义边:每个状态有两条边离开,一条对应输入0,另一条对应输入1。
  3. 标记边:每条边根据其输入和生成的输出进行标记,格式通常为“输入/输出1输出2”,并指向新的状态。
  4. 绘制方向:箭头表示状态的转移方向。

状态图的绘制

根据之前表格中的数据,可以确定每个状态对输入0和1的响应及输出。
每个状态有两个从该状态出发的箭头,分别对应输入0和输入1的响应。

基于我们已有的状态转移和输出表,我们可以构建卷积码的状态图,这是一种可视化表示,有助于理解状态之间的转移和由此产生的输出。状态图展示了卷积编码器在接收输入时如何从一个状态迁移到另一个状态,同时也展示了每种输入下的输出结果。

这样的状态图有助于直观理解卷积编码器在不同输入下如何改变状态,并且能够看到每种情况下的输出码元。这是通信系统设计和分析中的一个重要工具,特别是在设计和测试卷积编码方案时非常实用。

状态转移图

要画一个(2,1,2)卷积编码器的状态转移图,需要首先确定所有可能的状态和每个状态如何响应输入0或1。对于一个有两个寄存器的卷积编码器,状态可以是:00、01、10、11。每个状态对应于寄存器2和寄存器1的二进制内容。状态转移图将显示每个状态对于输入0或1的响应,以及相应的输出和下一状态。

在这里插入图片描述

法1步骤以绘制状态转移图

  1. 画出所有可能的状态:以圆圈表示,并在圆圈内部标记状态名(例如,00、01、10、11)。
  2. 为每个状态添加两个箭头:一个箭头对应输入0的响应,另一个箭头对应输入1的响应。
  3. 标记每个箭头:标记应包括输入/输出。例如,从状态00接收输入0并输出01(如果输出1为0,输出2为1,则标记为0/01)。
  4. 指明箭头的方向:箭头应指向基于当前状态和输入的下一状态。

在这里插入图片描述

箭头表示从某一状态到每一状态,0/10表示在这个状态下,输入0得到输出10。

以下是如何绘制状态图的描述:

  • 状态00
    • 0/00 -> 状态00
    • 1/11 -> 状态10
  • 状态01
    • 0/10 -> 状态00
    • 1/01 -> 状态10
  • 状态10
    • 0/01 -> 状态01
    • 1/10 -> 状态11
  • 状态11
    • 0/11 -> 状态01
    • 1/00 -> 状态11

每个箭头从当前状态指向下一状态,并在旁边标记输入和输出。例如,从状态00出发的两条边分别指向状态00和10,边上标记分别为"0/00"和"1/11"。

这样描述的状态转移图可以用笔和纸手动绘制,也可以使用各种软件工具如Graphviz、Lucidchart或Microsoft Visio等绘制。这种图形是通信系统设计和分析中常用的工具,有助于理解和验证编码器的行为。

法2卷积码状态转移

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

网格表示和码字路径(通过网格图寻找最匹配的路径)

在这里插入图片描述

在这里插入图片描述

在卷积码的分析和可视化中,网格表示和码字路径是两个常用的工具,它们帮助了解和说明卷积码的行为以及如何对编码的数据流进行解码。

网格表示(Trellis Diagram)

卷积码的网格表示,通常称为网格图或格子图(Trellis Diagram),是一种表示卷积码状态转移和路径选择的图形工具。它对于理解和实现维特比算法至关重要。

构建步骤
  1. 节点:网格图的每个列代表一个时间步,每个列中的节点代表在该时间步可能的编码器状态。
  2. :节点之间的边代表可能的状态转移。每个边上标有从一个状态转移到另一个状态时的输入/输出。
  3. 时间步:每进一个时间步,输入一个新的数据比特,并产生一个或多个输出比特。编码器状态更新,移向新的状态。
功能
  • 显示所有可能的状态和在每个时间步的转移。
  • 识别并选择最佳路径(即最有可能产生观测到的接收数据序列的路径)。

码字路径

码字路径是网格图中从起始点到结束点的路径,表示了一个特定的输入序列如何被编码。每条路径都对应于特定的输入序列,并在网格图中由一系列边组成,这些边展示了序列经过编码器状态的变化。

解码过程

在接收端,维特比算法通过网格图搜索最佳路径(即最小汉明距离或最小错误概率路径)来译码。这条路径对应的就是最可能的输入序列。

  • 观测到的序列:接收机接收到的序列,可能由于信道噪声含有错误。
  • 搜索最佳路径:根据每条路径的可能性(通常是路径代价的累积),选择最佳路径。
  • 汉明距离:每条路径产生的输出与实际接收到的序列之间的汉明距离用于评估路径。

例题

我们可以绘制一个网格图,每个时间步展示所有可能的状态转移。如果已知的接收序列是010111...,我们将通过网格图寻找最匹配的路径,这将是解码过程的一部分。

在这里插入图片描述

直接对照上图来连接点。

在这里插入图片描述

网格表示和码字路径提供了一种直观的方式来分析和理解卷积编码及其在信号传输中的作用,尤其是在实现和测试编码解码算法时非常有用。

应用

卷积编码器在无线通信系统中尤为重要,例如在卫星通信、深空通信以及移动通信中广泛使用,以提高数据传输的可靠性。通过引入错误纠正能力,卷积编码帮助通信系统在有错误的信道环境下恢复原始数据。


欢迎大家添加好友,持续发放粉丝福利!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java难点】多线程-终极【更新中...】

Java内存模型之JMM 为什么需要JMM 计算机存储结构:从本地磁盘到主存到CPU缓存,也就是从硬盘到内存,到CPU。一般对应的程序的操作就是从数据库查数据到内存然后到CPU进行计算。 CPU和物理主内存的速度不一致,所以设置多级缓存&am…

Github 2024-05-10 Java开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10C++项目2JavaGuide - Java 程序员学习和面试指南 创建周期:2118 天开发语言:Java协议类型:Apache License 2.0Star数量:140773 个…

机器学习求数组的迹

机器学习求数组的迹、也叫求矩阵的迹。 矩阵的迹,也称为迹数,是矩阵主对角线上所有元素的和。矩阵的迹具有以下重要性质:- 不变性:矩阵的迹在转置、加法、乘法等运算下保持不变。- 特征值关系:一个方阵的迹等于其所有特…

手机恢复出厂设置会怎么样?一切回到了原点?

随着智能手机的普及,我们每天都在与手机紧密互动,里边存储了大量的个人信息和应用数据。然而,有时候我们会遇到手机卡顿、应用崩溃或数据丢失的问题。这时,恢复出厂设置成为了许多人的选择。那么,手机恢复出厂设置会怎…

AI作画算法原理

AI作画算法原理是一个涉及深度学习和计算机视觉的复杂过程。以下是对其原理的详细解释: 数据收集与处理: 首先,需要收集大量的艺术作品作为训练数据。这些数据可以来自各种来源,如艺术博物馆、画廊、在线图库等。对这些数据进行预…

ShellCode详解一

首先,感谢imbyter的教程,我也是从他的教程中一步一步的了解了shellcode的原理和各种知识。 原理 shellcode仅是一段可执行代码,不需要入口函数。理解shellcode加载原理之前需要理解PE文件在系统中的执行原理,即代码在内存中的执…

centos7下安装配置nginx

1、下载nginx安装包 wget http://nginx.org/download/nginx-1.8.0.tar.gz 2、安装nginx所需依赖 yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel 3、进入到nginx安装包目录下,解压tar.gz包 cd /home/soft t…

物联网概述定义体系架构、与云计算关系

物联网概述 物联网综述 所谓物联网是指把所有物品通过射频识别等信息传感设备与互联网连接起来,从而实现智能化识别和管理,是继计算机、互联网和移动通信之后的又一次信息产业的革命性发展。 以信息感知为特征的物联网被称为世界信息产业的第三次浪潮…

Python 全栈系列243 S2S flask_celery

说明 按现有的几个架构部件,构建数据流。 S Redis Stream。这个可以作为缓冲队列和简单任务队列,速度非常快,至少是万条/秒的速度。 Q RabbitMQ。这个作为任务队列,消息也主要是元数据。读速比较慢,但有一些特性&a…

如何获得临时谷歌邮箱?

什么是临时谷歌邮箱? 临时谷歌邮箱,也称为一次性谷歌邮箱或匿名谷歌邮箱,可以用来作为你的个人临时谷歌邮箱账户,而不需要亲自注册谷歌账户就可以使用。这些邮箱在一定时间后自动销毁,期间无需用户进行任何操作。它们…

使用 Express 框架构建的 Node.js web 应用程序

使用 Express 框架构建的 Node.js web 应用程序 ├── config │ └── config.js ├── middlewares │ └── errorHandler.js ├── routes │ ├── index.js │ ├── postRoutes.js │ └── userRoutes.js ├── .env ├── .gitignore ├── app.js ├…

c++ 获取机器码

看到网上代码代码都没什么好的&#xff0c;自己备用一个 #include <iostream> #include <string> #include <sstream> #include <iomanip> #include <Windows.h> #include <iphlpapi.h> // 包含这个头文件以获取 PIP_ADAPTER_INFO #inclu…