卷积码编码和译码

PAGE 2

No.15 (2,1,3)卷积码的编码及译码

摘要:

本报告对于(2,1,3)卷积码原理部分的论述主要参照啜刚教材和课件,编程仿真部分绝对原创,所有的程序都是在Codeblocks 8.02环境下用C语言编写的,编译运行都正常。完成了卷积码的编码程序,译码程序,因为对于短于3组的卷积码,即2 bit或4 bit纠错是没有意义的,所以对正确的短序列直接译码,对长序列纠错后译码,都能得到正确的译码结果。含仿真结果和程序源代码。

如果您不使用Codeblocks运行程序,则可能不支持中文输出显示,但是所有的数码输出都是正确的。

一、 卷积码编码原理

卷积码编码器对输入的数据流每次1bit或k bit 进行编码,输出n bit编码符号。但是输出的分支码字的每个码元不仅于此时可输入的k个嘻嘻有关,业余前m个连续式可输入的信息有关,因此编码器应包含m级寄存器以记录这些信息。

通常卷积码表示为 (n,k,m). 编码率

当k=1时,卷积码编码器的结构包括一个由m个串接的寄存器构成的移位寄存器(成为m级移位寄存器、n个连接到指定寄存器的模二加法器以及把模二加法器的输出转化为穿行的转换开关。

本报告所讲的(2,1,3)卷积码是最简单的卷积码。就是,,的卷积码。每次输入1 bit 输入信息,经过3级移位寄存器,2个连接到指定寄存器的模二加法器,并把加法器输出转化为串行输出。

编码器如题所示。

二、卷积码编码器程序仿真

C语言编写的仿真程序。

为了简单起见,这里仅仅提供数组长度30 bit的仿真程序,当然如果需要可以修改数组大小。为了更精练的实现算法,程序输入模块没有提供非法字符处理过程,如果需要也可以增加相应的功能。

进入程序后,先提示输入数据的长度,请用户输入int(整型数)程序默认用户输入的数据小于30,然后提示输入01数码,读入数码存储与input数组中,然后运算输出卷积码。经过实验仿真,编码完全正确。

以下是举例:

a.课件上的输入101 输出11 10 00 的实验

b.更长的序列测试

三、卷积码译码原理

由有限状态移位寄存器产生的卷积码实质上是一个有限状态机。(n, k)线性分组码的最大似然译码就是在所有合法码字中找出一个最接近接收码字的码字。卷积码的最大似然译码法则是对于给定的接收符号序列R,找出最大可能的编码符号序列C。维特比于1967年提出的维特比算法能够系统地去除那些不可能具有最大度量的路径排除,从而降低了最大似然译码的复杂度。

(2,1,3)卷积码的状态图

(2,1,3)卷积码的网格图

卷积码一码通常按最大似然法则一码,对二进制对称信道(BSC),它就等小于最小汉明距离译码。在这种译码器中,把接收序列和所有可能发送序列比较,选择一个汉明距离最小的序列盘坐发送序列。由于信息序列编码序列有着一一对应关系,这种序列和网格图的一条路径唯一对应,因此译码就是根据接收序列R在网格图上全力搜索编码器在编码时经过的路径。

四、卷积码译码器程序仿真

C语言编写的仿真程序。

为了简单起见,这里仅仅提供数组长度2×10 bit的仿真程序,当然如果需要可以修改数组大小。为了更精练的实现算法,程序输入模块没有提供非法字符处理过程,如果需要也可以增加相应的功能。

进入程序后,先提示输入数据的长度,请用户输入int(整型数)程序默认用户输入的数据小于30,然后提示输入01数码,读入数码存储与input数组中,然后运算输出卷积码。经过实验仿真,译码完全正确。

以下是举例:

a.课件上 接收码字11 10 00 译码101的实验

b.对应上文中的,长序列译码测试结果

c.译码与编码的区别在于容错性,如果在传输过程中有出错的比特,也应该用Viterbi decoder在一定的范围内自动纠错,得到正确的发端的编码,并翻译出发端的原码。本报告中对于比较长的序列(>2)进行纠错。以课件中的例子进行仿真

R是收到的码字,C是发送方发出的正确的码字,R有2 bit信息出现错误。运行程序的到结果。

当用译码器接收正确的序列C时 显示以下结果:

当接收到的序列错误时

译码结果如下:

如此时把译码结果输入上文中的编码器程序,即可得到发送方发出的正确的码字:

综上,译码程序能对于正确的较短(<3组)的卷积码序列进行译码,得到正确的译码结果。对于较长的序列(>2)可以纠错,纠正后,得到正确的卷积码,然后译码得到原码。程序仿真完全正确。

d.模拟一个完整的传输过程:

发送方输入序输入到编码器程序中:

得到卷积码输出:11 01 01 11 11 10 00 10

若传送到接收端,由于信道的各种干扰,接收码字发生了变化,得到的接收码字:

11 11 01 11 01 10 11 10

共有2 bit

卷积码编码和译码c语言,卷积码编码和译码.doc相关推荐

  1. 费诺编码实验报告c语言,信息论编码实验报告费诺编码附源代码..doc

    信息论编码实验报告费诺编码附源代码. 中南大学 信息论与编码实验报告 选 题: 费诺编码 学生姓名: 学 号: 专业班级: 通信工程 指导老师: 学 院: 信息科学与工程学院 时 间: 2015 目录 ...

  2. 单片机无线模块编码和解码c语言,单片机编码 无线模块发送与接收 程序

    单片机编码 无线模块发送与接收 程序 模块型号,可在万能的某宝搜索[超再生无线模块] 接收距离:空旷200米[这是卖家说的,有待考验] 接收端在没有收到讯号,会生成间歇性尖状脉冲,data接LED负极 ...

  3. 电文的编码和译码c语言实现,电文的编码及译码.doc

    数据结构课程设计 题目:电文的编码与译码 院系: 班级: 学号: 姓名: 2014-2015年度 第1学期 目录 一.题目:电文的编码与译码3 二.设计目标3 三.问题描述3 四.需求分析3 五.概要 ...

  4. 基于matlab的卷积码实验报告,基于MATLAB的卷积码编译码设计仿真.doc

    摘要:在数字信号的传输过程中,会受到信道特性不理想和噪声的影响,通常采用差错控制编码来提高系统的可靠性.卷积码是P.Elias等人提出的,这一编码技术至今广泛使用.目前,卷积码已普遍在无线通信标准使用 ...

  5. 编码互换变量c语言,【剑仙教程】TC。字符 和字符编码 互换。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 TC.字符和字符编码的转换. 关键字:怎样取一个汉字的unicode码. 怎样取一个字母或者数字的ascii码. 怎样随机输出7000汉字.中文标点. 怎 ...

  6. go 变量大写_28. 一文了解Go语言中编码规范

    大家好,我是明哥. 由于某些不可抗力,之前该专栏的所有内容都被删除了.因此之后的一段时间内,我会重新发布这些文章,先给已经看过的关注者提个醒. 本文原文:http://golang.iswbm.com ...

  7. c语言linux下可用函数,[原创]linux下编码转换问题,C语言实现,使用iconv函数族68...

    [原创]linux下编码转换问题,C语言实现,使用iconv函数族68 (2012-07-30 02:49:00) 标签: linux 68 c语言 杂谈 #include #include #inc ...

  8. C语言学习(十二)C语言中的字符(宽字符与窄字符)、从字符谈谈C语言的编码、转义字符

    C语言学习(十二)C语言中的字符(宽字符与窄字符).从字符谈谈C语言的编码.转义字符 目录 C语言学习(十二)C语言中的字符(宽字符与窄字符).从字符谈谈C语言的编码.转义字符 英文字符 字符的表示 ...

  9. huffman编码译码器用c语言,基于哈弗曼编码的数据压缩C语言实现

    haod 摘要 数据压缩技术是一项重要实用的信息技术.信息时代的到来,信息量迅速增长,使得数据压缩也显得越来越重要.数据压缩有多种编码方法,大致可分为无损压缩编码和有损压缩编码.其中,Huffman ...

  10. 【编码译码】基于matlab HDB3编译码仿真【含Matlab源码 1961期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[编码译码]基于matlab HDB3编译码仿真[含Matlab源码 1961期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

最新文章

  1. Alisql源码编译安装(详细篇)
  2. 互联网人职业发展之路,你中招了吗?| 每日趣闻
  3. 蓝牙怎么实现传输的_不知道手机蓝牙有啥用?1分钟带你了解蓝牙这6种用法!涨知识啦...
  4. How are SAP ui5 Control Aggregation getter and setter are designed
  5. SQLServer2000同步复制技术实现步骤作者
  6. php判断日期文章变红,DeDecms如何实现当天发表的文章日期以红色显示
  7. 推荐的字符与字符串处理方式
  8. ppa java 8_通过 ppa 在ubuntu server 上安装java 8
  9. 怎么调用新建模型里文章的内容_读完这篇文章,再难的建筑模型你都能快速上手...
  10. ELK之metricbeat
  11. java中jlaber用法_laber的for属性
  12. 自我成长和学习的32个网站,每天逛一逛都有不同的收获
  13. 微信小程序---全局/本地存储
  14. orb-slam系列 LoopClosing线程 DetectLoop(十)
  15. 在Linux中各类重要文件被丢失的解决方式
  16. JBuilder连接oracle数据库
  17. Springboot学习笔记(二)Web开发
  18. 一张表告诉你木兰宽松许可证第二版(MulanPSL v2)与业界主流许可证的主要异同...
  19. BloomFilter布隆过滤器
  20. java8日期时间格式化与解析

热门文章

  1. 计算机信息安全专业代码0839,全国网络空间安全学科专业分布
  2. 13.56MHZ刷卡芯片CI521兼容cv520/ci520支持A卡B卡MIFARE协议
  3. 《分布式微服务电商源码》-项目简介
  4. python题目-奇偶数调用函数
  5. Qt For Android 获取手机屏幕大小
  6. html转换成pdf后变模糊,使用html2canvas.js和jspdf.js把网页转换成 pdf 不清晰怎么解决...
  7. python百度贴吧发帖签到_Python实例 | 贴吧签到
  8. C#操作base64文件
  9. 孪生素数——C语言实现
  10. 输出100以内的素数