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

news2024/10/7 6:43:34

【信道编码】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.coloradmin.cn/o/1663517.html

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

相关文章

微信小程序按钮去除边框线

通常我们去掉按钮边框直接设置 border:0 但是在小程序中无效,设置outline:none也没用,当然可能你会说加权重无效 实际上该样式是在伪元素::after内,主要你检查css 还看不到有这个关系,鹅厂就是坑多 类样式::after {border: non…

odoo16 图标替换系列

1、网友标签标签 修改文件:addons/web/static/src/webclient/webclient.js 修改内容: 我把 "odoo" 替换成了 "RH" this.title.setParts({ zopenerp: "RH" }); // zopenerp is easy to grep2、修改登陆界面 技术/视图/L…

代码复现|subprocess.run()导致报错“FileNotFoundError: [WinError 2] 系统找不到指定的文件“

一 问题描述 记录复现(windows平台下,机器学习算法)代码遇到的问题。 根据控制台信息提示,定位到问题所在:sp.run()导致报错“FileNotFoundError: [WinError 2] 系统找不到指定的文件“。 定位报错位置如下&#xff0c…

PyQt5中的组件

文章目录 1. 简介2. QCheckBox3. QPushButton4. QSlider5. QProgressBar6. QCalendarWidget7. QPixmap8. QLineEdit9. QSplitter10. QComboBox11. 总结 1. 简介 在PyQt5中,有许多不同类型的组件,可以用于构建各种GUI界面。以下是一些常见的PyQt5组件&am…

读写备份寄存器BKP与实时时钟RTC

文章目录 读写备份寄存器接线图代码 RTC实时时钟接线图代码 读写备份寄存器 接线图 即接个3.3v的电源到VBT引脚 代码 代码效果:第一次写入备份寄存器,下载程序后再注释掉,再进行下载,之前写入的数据还会保存在备份寄存器中&am…

Java基础入门day48

day48 JDBC调用关系 tomcat 简介 tomcat是Apache下的一个核心项目,免费开源,支持servlet和jsp。 tomcat技术先进,性能稳定,目前比较流行的web应用服务器 安装 官网: Apache Tomcat - Welcome! 下载 tomcat8.5 解压&a…

leetcode——链表的中间节点

876. 链表的中间结点 - 力扣(LeetCode) 链表的中间节点是一个简单的链表OJ。我们要返回中间节点有两种情况:节点数为奇数和节点数是偶数。如果是奇数则直接返回中间节点,如果是偶数则返回第二个中间节点。 这道题的解题思路是&a…

使用Three.js绘制快速而逼真的水

本文将利用GPUComputationRenderer来实现水波纹的绘制,相似的案例可以看threejs官方的GPGPU Water示例。更多精彩内容尽在数字孪生平台。 什么是 GPGPU GPGPU代表通用图形处理单元(General-Purpose Graphic Processing Unit),意思…

护肤升级:如何选择最适合您的AI皮肤技术解决方案?

在不断变化的护肤行业中,人工智能技术的整合已经彻底改变了企业满足个人护肤需求的方式。了解人工智能在美容行业的重要性以及提供的解决方案,是选择最合适的解决方案至关重要的。领先的主要参与者之一是玩美移动,他们提供了一套全面的AI皮肤…

算法day04

第一题 : 209. 长度最小的子数组 有上题可知,我们会采用双指针和单调性的思路来解决 我们本题采用左右双指针从数组的0位置同向前进,所以将此类模型称为滑块; 步骤思路如下: 步骤一: 定义所有双指针都指向…

使用 Kubeadm 搭建个公网 k8s 集群(单控制平面集群)

前言 YY:国庆的时候趁着阿里云和腾讯云的轻量级服务器做促销一不小心剁了个手😎😢,2 Cores,4G RAM 还是阔以的,既然买了,那不能不用呀🚩,之前一直想着搭建个 k8s 集群玩…

用HAL库改写江科大的stm32入门例子8-1 DMA数据转运

实验目的:通过DMA把buffer的数据搬运到buffer2当中 //declare a buffer to store the data uint32_t buffer[3] {1,2,3};//declare a buffer to store the data uint32_t buffer2[3] {0,0,0}; DMA:是个搬运数据的小助手。 相关设置: main…

算法练习day7

四数相加II 代码随想录 0454.四数相加II 454. 四数相加 II - 力扣(LeetCode) (用时:0.5小时) 思路 本道题是需要在四个数组中,各找一个数,这些数加起来能够等于0,那么就是答案元…

ChatGPT未来可能应用于iPhone?

苹果接即将与OpenAI达成协议 ChatGPT未来应用于iPhone 前言 就在5月11日,苹果公司正与OpenAI进行深入讨论,计划在其最新的iOS操作系统中整合OpenAI的先进技术。这一举措是苹果公司在为其产品线融入更先进的人工智能功能所做努力的一部分。 目前情况双方…

Vue路由拆分

1.在src下建立router&#xff0c;在router中建立文件index 2.将main.js中部分内容复制 App <template> <div><a href"#/friend">朋友</a><br><a href"#/info">信息</a><br><a href"#/music&quo…

源代码防泄密的重要性

​源代码”作为互联网企业的核心资产之一&#xff0c;其安全性至关重要。源代码泄露不仅可能导致企业丧失技术优势&#xff0c;还可能引发知识产权纠纷、增加竞争对手的市场竞争力&#xff0c;甚至可能被用于恶意目的&#xff0c;如开发恶意软件等。因此&#xff0c;保护源代码…

没有公网ip,如何实现外网访问内网?

目前拨号上网是最广泛的上网方式&#xff0c;这种方式优点是价格便宜&#xff0c;缺点是没有固定公网ip&#xff0c;每次重新您拨号ip地址都会变。如果有一台服务器&#xff0c;需要实现外网访问&#xff0c;在没有固定公网ip的环境下&#xff0c;该如何实现呢&#xff1f;使用…

apk反编译修改教程系列-----让你反编译apk中 事半功倍的辅助编译软件列举【十六】

在反编译apk中。排除我们常用的编译软件外。还有很多辅助编译软件。例如用来查看代码 转换语言 加解密算法 文件监听 弹窗定位 activity记录 签名验证 dex文件混淆 签校测试 apk伪加密 apk对齐 拆分dex 合并dex 等等类似的功能 通过此课程了解; 01----反编译软件中列…

哪些软件格式在win跟linux上都能运行?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 有一些软件格式在Windows和Li…

基于yolov8的水果检测系统,系统既支持图像检测,也支持视频和摄像实时检测(pytorch框架)【python源码+UI界面+功能源码详解】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 基于yolov8的水果检测系统&#xff0c;系统既支持图像检测&#xff0c;也支持视频和摄像实时检测_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov8的水果检测系统是在pytorch框架下实…