线性分组码的编译码(DOC)

线性分组码的编译码(DOC)
线性分组码的编译码(DOC)

******************

实践教学

******************

兰州理工大学

计算机与通信学院

2013年秋季学期

计算机通信课程设计

题目:线性分组码(7,3)码的编译码仿真设计

专业班级:通信工程三班

姓名:彭佳峰

学号: 10250302 指导教师:彭铎

成绩:

摘要

本课题是应用C语言对(7,3)线性分组码的编译码的软件设计。主要做了一下几项工作:对三位正确的信息码进行编码;若输入的三位信息码有错,系统输出提醒,可以重新输入;对七位接收到的码字判断是否有错,并在无错和有一位错误时进行译码,在有多位错误时输出提醒,可以选择重新输入。

关键字:线性分组码编码译码 C语言

目录

前言 (1)

1 基本原理 (2)

1.1线性分组码的基本概念 (2)

1.2差错控制原理 (2)

1.3线性分组码的纠检错能力 (3)

2线性分组码的编码 (4)

2.1监督矩阵 (4)

2.2生成矩阵 (5)

3线性分组码的译码 (7)

4设计与仿真 (9)

4.1 C语言平台简介 (9)

4.2整体流程图 (9)

4.3编码流程图 (10)

4.4译码流程图 (10)

5 仿真结果及分析 (11)

设计总结 (17)

参考文献 (18)

致谢 (19)

附录 (20)

前言

近年来,随着计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛应用,人们对数据传输和存储系统的可靠性提出了越来越高的要求。因此,如何控制差错、提高数据传输和存储的可靠性,成为现代数字通信系统设计工作者所面临的重要课题。香农第二定理指出,当信息传输率低于信道容量时,通过某种编译码方法,就能使错误率为任意小。差错控制编码在此定理指导下迅速发展起来,它使得传输数据本身带有规律性,利用规律性来减少错误。

线性分组码是差错控制编码的重要一种。它的规律性在于局限在一个码组之内,编码后长为n的一个码组中含有k位信息元和n-k位监督元,监督元是随所传输的信息元而改变的。接收端正式通过监督元和信息元之间的规律性来发现并纠正错误的。

1 基本原理

1.1线性分组码的基本概念

(1)线性分组码

线性分组码是一组固定长度的码组,可表示(n,k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。当分组码的信息码元与监督码元之间的关系为线性关系时,这种分组码就称为线性分组码。

对于长度为n的二进制线性分组码,它有2n种可能的码组2n,从码组中,可以选择M=个码组(k

以映射到一个长度为n的码组上,该码组是从2k

M=码组构成的码集中选出来的,这样剩下的码组就可以对个分组码进行检错或纠错。

(2)码重(汉明重量)

把码组中非零位的数量定义为码重。

(3)码距(汉明距离)

两个码组对应位上数字不同的个数称为码组的距离,简称码距。原则是,让选择的这些码字的码距越长越好。

1.2差错控制原理

将信息码分组,并为每个信息组附加若干监督的编码,称为“分组码”。在分组码中,监督码元仅监督本组码中的信息码元。分组码一般用符号(n)、(k)表示,其中k是每组码二进制信息码元的数目。n是码组的总位数,又称为码组的长度。r=n-k为每个码组中的监督码元数目,或称监督位数目。

k位二进制数构成的码组集合为2k种不同的码组,若2k组都为有用码组,其中任意码组出现错误都将变成另一码组,则接收端无法检测识别哪一组出错。若只取部分码组为有用码组,则在传输过程中如接收端接收到的码组为非许用码组即禁用码组时,则可知传输错误。

以3位二进制数构成的码组为例,它有8种不同的可能组合,若将其全部用来表示天气,则可以表示8种不同天气,例如:000晴、001云、010阴、011雨、100血、101霜、110雾、111雹。其中任一码组在传输中若发生一个或多个错误,则将变成另一个信息码组。这时接收端无法发现错误。若在上述8种码组中次序使用4种来传达天气,例如:000晴、011云、101阴、110雨。这时,虽然只能传达4种不同天气,但是接收端却可能发现码组中的一个错码。如000错码一位,则接收码组将变成100或011,这三种码组都为禁

用码组,故接收端认为接收码错误。要想能够纠正错误,需增加冗余度。

1.3线性分组码的纠检错能力

最小码距与码的抗干扰能力之间的关系,通过证明(不给出详细的证明过程),可以得到如下的结论,具体如下:

若一种码的最小距离为d 0,则它能检查传输差错个数(称为检错能力)e 应满足

10+≥e d ;

若一种码的最小距离为d 0,则它能纠正传输差错个数t 应满足120+≥t d ;

若一种码的最小距离为d 0,则能检查e 个错误,同时又能纠正t 个一下错误的条件是

()t e e d >+≥10。

2线性分组码的编码

2.1监督矩阵

(n,k)码中有n-k 个监督元,例如(7,3)码,以序列c c c c c c c 0123456表示码组,前面三位c c c 456为信息元。监督元根据以下四个线性方程求得:

c c c 463+=

c c c c 4562++=

c c c 561+= (2.1) c c c 450+=

通常称这四个线性方程为(7,3)码的一致监督关系或一致监督方程组。

一致监督关系是从12827=个n 重矢量中挑选出来的,具有封闭性。把这种结构形式的线性分组码称为线性系统分组码。

将一致的监督方程组移动并记成矩阵形式:

0346=++c c c 02456=+++c c c c 0156=++c c c 0045=++c c c

或者记成以下形式:

信息组 码组 信息组 码组 000 0000000 100 1001110 001 0011101 101 1010011 010 ******* 110 1101001 011

0111010

111

1110100

0000

010

0011

0010001100101

1100011010123456=?????

???????=??????????

???????????????

???????

???c c c c c c c (2.2)

表一 信息码与许用码组对应表

式中P 是()k k n ?-阶矩阵,I r 是r 阶单位方阵。称具有这种子形式的H 矩阵为典型阵。上式可以简写成:0==CH HC T T

一致监督矩阵H 完全确定了线性分组码的规律性,找到了H 矩阵也就确定了线性分组码的构造。

2.2生成矩阵

生成矩阵反映了信息元和监督元之间的直接关系。 对于上例,可将编码方程改写为:

c

c 6

6

=

c c 5

5=

c c 44=

c c c 463+= c c c c 4562++=

c c c 5

6

1

+=

c c c 4

5

+=

[][]00000100001000010000110111110011101

23456

==???

?

??

?

?

?

?

?

????????????c c c c c c c (2.3) []I P P P P P P P P P r k k n k n k n k k P H =?????

?

??????

??=

---1...

0.....................0...100...

1,2,1,2222111211 (2.4)

???????????????????

??

?

???

???

?????=??????????

????????????c c c c c c c c c c 4560123456110011111101

100010

00

1

式中

称为(7,3)码的生成矩阵。系统码的生成矩阵具有[]Q I k 的形式,称为典型生成矩阵。 通常,二进制(n,k)线性系统码的生成矩阵G 具有如下形式:

G 矩阵的每行都是一个码字。有了G 矩阵或H 矩阵,线性分组码的构造就确定了,根据C=IG ,就可计算出该码组的全部码元。

比较P 矩阵和Q 矩阵,便知Q P T =,或P Q T =。这就是说,P 的第一行就是Q 的第一列,P 的第二行就是Q 的第二列...因此,H 一定,Q 也就确定,反之亦然。

[][][]G c c c c c c c c c c c c c ?=????

?

??????=4564560123456101110011100100111001(2.5)

[]????

?

?????==101110011100100111001Q G I k (2.6)

[]??

?

?

???

??

??

?

??==+++q q q q q q I n k k k n k n k k

Q G ,1

,,21,2,11,1 (1)

...00......

...

...

0

...10 0

...01 (2.7)

[]?

?

??

?

????

???==100011001000110010111

0001101

PI r H (2.8)

[]???

???==11100100111001Q G I k (2.9)

3线性分组码的译码

为了描述数据在传输信道中出现差错的情况,引入了错误图样的概念。错误图样:错误图样是接收序列和发送序列之间的差,用E 表示。在错误图样中,0表示对应位没有传错,1表示传输有错。例如:发送序列[]0100101=C ,接收序列[]0110101=R ,则错误图样

[]0010000

=-=C R E 。 可见,在译码时,只要设法从R 中找到错误图样E ,就可恢复发送端发送的码字

C ,E R C -=。因此,译码的任务就是要找到E 。首先,我们假定:发送码组为[]C C C C C C n n 01221...--=,接收码组为[]R R R R R R n n 01221...--=,错误图样[]E E E E E E n n 01221...--=。若

1=E i ,说明R i 与C i 不同,码字的C i 位发生了错误。

由于每个码字C 必须满足H 矩阵每行所确定的线性方程,因而收到R 后,可用H 矩阵检查,若等于0则认为是码字,没有错误;否则就认为R 不是码字,产生了错误。

定义:[]()EH EH CH H E C RH S S S S T T T T T r r =+=+===--021...,将EH T 称为接收向量R 的伴随式。显然S 仅与错误图样有关,而与发送的码字无关。若0=E ,则0=S ;若0≠E ,则0≠S 。因此根据S 是否可为0可进行码字的检查。

假如接收码字R 中只有一位码元发送错误,又设错误在第i 为,即1=-E i n ,其它的均为

0,则EH T 为H T 的第i 行,为H 的第i 列。

[]E E E E E E n n 01221...--= (3.1)

[]???

??

????

???==10

00110

01000110010111

0001101

PI H r (3.2) [][]S

EH T

==???

???

?

???

?????????????=10111000010000100001

1011111001110000100 (3.3)

接收端根据这个结果便可判断出接收码的第i 位发生错误,从而实现纠错。如果接收码组中有多位码元同时发生错误,设错误在i ,j ,...,i 位,即11====----E E E E n k n j n i n ,其余的0=E i ,同理可知:

这说明S T 相当于H 矩阵的第i ,j ,k ,...,1列的线性组合,假设这个线性组合为0,即伴随式序列()0...00=S ,则在接收端是不能判断出接收码组中R 中有错(此时的错误称不可检错误)。假设这个线性组合恰好相当于H 矩阵的某一列,在接收端根据这个结果来纠错,则会做出错误的纠正;假设这个线性组合的结果与H 矩阵中的任一列都不相当,则根据这个结果只能检测出R 中有错,而不能进行纠正。综上所述,一个(n,k)码要能纠正所有单个错,则由所有单个错误图样确定的S 均不相同且不等于0。若要能纠正t ≤个错误,显然要求t ≤个错的所有可能组合的错误模式都必须有不同的伴随式与之对应。

??????

?

???????=???????????

???=--h h h S S S S

ri i i r r T

......21021 (3.4) ??

???

?????????++????????

??????+??????????????+??????????????=??????????????=--h h h h h h h h h h h h S S S S

r rk k k rj j j ri i i r r T

12111212121021.................. (3.5)

4设计与仿真

4.1 C 语言平台简介

C 语言是Combined Language (组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。各类科研都需要用到C 语言,具体应用比如单片机以及嵌入式系统开发。其语言特点如下: (1)C 是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

(2)C 是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

(3)C 语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C 语言也具有强大的图形功能,支持多种显示器和驱动器。

(4)C 语言适用范围大。适合于多种操作系统,如Windows 、DOS 、UNIX 等等;也适用于多种机型。

(5)C 语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C 语言编写的。

4.2整体流程图

图4.1 整体流程图

开始

结束

编码函数 解码函数

选择函数

4.3编码流程图

初始化

输入信息码C1[3]并代

入编码方程

存储并输出编码结果

C2[7]

返回

图4.2 编码流程图

4.4译码流程图

初始化

输入接收到的码字R1[7]

输入生成矩阵G[3][7],计算出

监督矩阵H[4][7]其转置矩阵

HT[7][4]

计算出伴随式S[4]

接收端认为传输中有一个错误,

此时错误图样E[i]=1

S[4]=[0000]

S[4]=HT[7][4]的 第i 行

接收端认为传输有错,

但不能纠正

错误图样E[7]=[0000000]

接收端认为传输无错

输出译码结果R2[i]=R1[i]+E[i]

返回

图4.3 译码流程图

5 仿真结果及分析(1)初始化界面设置

图5.1 初始化界面的设置

通过初始化界面,可以选择编码或者译码。

(2)编码的结果

图5.2 输入信息码为111时的编码结果

图5.3 输入信息码为010和110时的编码结果

图5.4 输入信息码为101和011时的编码结果

三位信息码c

c

c456有八种情况,即000,001,010,011,100,101,110,111.通过编码程序的编码结果来看,与表1对比,发现编码结果与理论值相一致,表明程序正确。(3)输入信息码中有非二进制码是的处理结果

图5.5 输入信息码有错误时的提醒示意图(4)译码的结果

图5.6 监督矩阵及转置矩阵的计算示意图(5)正确译码时的运行结果

图5.7 译码正确时的示意图

(6)运行错误时的结果

图5.8 运行有一个错误时的结果示意图

图5.9 运行有两位错码时的结果示意图

设计总结

此次课程设计主要针对线性分组码编码译码提出自己的设计方案,并利用C语言来实现自己的软件设计。设计中用到了很多计算机通信课程中学到的知识,例如:差错控制技术等。由于对所学概念掌握的不准确,原理不是很清晰,虽然条条框框的理论知识一大推,但由于没有经过实践的检验,当正式用时却不知道怎么用,更不知道该往哪用,从而导致在设计的过程中不能抓住重点,不清楚到底该怎么做,使得在设计过程中绕了许多弯路,做了许多的无用功。

设计过程中查阅了大量的有关线性分组码编码与译码的书籍,巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合的必要性,只有理论知识是远远不够的,它更多的只是用来应付考试,而当正真实际操作时却是困难重重,所以只有把所学的理论知识与实践相结合起来,并从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计过程中遇到的问题,可以说得是很多,例如刚开始时,对线性分组码的理解不是很透彻,不知道其编码与译码的方法;后来刚熟悉了原理,却因为对C语言知识掌握不扎实,编写不出来正确的程序,以致又花费了好多时间继续学习C语言编程和上网查找相关资料,导致恶性循环,待编好程序时已费了很多功夫,这毕竟跟平时的理论知识有着很大的关联,故在以后的学习中一定要稳扎稳打,深刻理解理论知识,为今后的实践性活动打下坚实的基础,以免到时又像这次一样再费周折;同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。总之,通过这次课程设计之后,我发现自己的不足之处还很多,我下去以后一定把以前所学过的知识重新温故。

对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!

移动通信实验线性分组码卷积码实验

实验二抗衰落技术实验(4学时) 1.线性分组码实验 2.卷积码实验 姓名: 学号: 班级: 日期: 成绩:

1、线性分组码实验 一、实验目的 了解线性分组码在通信系统中的意义。 掌握汉明码编译码及其检错纠错原理,理解编码码距的意义。二、实验模块 主控单元模块 2号数据终端模块 4号信道编码模块 5号信道译码模块 示波器 三、实验原理

汉明码编译码实验框图 2、实验框图说明 汉明码编码过程:数字终端的信号经过串并变换后,数据进行了分组,分组后的数据再经过汉明码编码,数据由4bit变为7bit。 注:为方便对编码前后的数据进行对比观测,本实验中加入了帧头指示信号。帧头指示信号仅用于线性分组码编码时将输入信号的比特流进行分组,其上跳沿指示了分组的起始位置。 四、实验步骤 (注:实验过程中,凡是涉及到测试连线改变或者模块及仪器仪表的更换时,都需先停止运行仿真,待连线调整完后,再开启仿真进行后续调节测试。) 任务一汉明码编码规则验证 概述:本项目通过改变输入数字信号的码型,观测延时输出,编码输出及译码输出,验证汉明码编译码规则。 1、登录e-Labsim仿真系统,创建实验文件,选择实验所需模块和示波器。 2、按表格所示进行连线。 3、调用示波器观测2号模块的DoutMUX和4号模块的编码输出TH4编码数据,

6、此时系统初始状态为:2号模块提供32K编码输入数据,4号模块进行汉明码编码,无差错插入模式,5号模块进行汉明码译码。 7、实验操作及波形观测。 0000 0001 0010

0100 0101

0111 1000

实验二线性分组码的编译码报告

信息论与编码实验报告 理学院班级学号(后两位)姓名 理学院班级学号(后两位)姓名 实验名称 实验二、线性分组码的编译码 实验设备 (1)计算机(2)所用软件:Matlab 或者C 实验目的 了解线性分组码编译码的基本原理及其特点;熟练掌握线性分组码编译码的方法与步骤;实验内容 根据线性分组码编译码的方法步骤,编写对应编译码程序; 实验报告要求 简要总结线性分组码编码和采用伴随式纠错译码的基本原理及步骤; 讨论(6,3)线性分组码的编码。系统生成矩阵如教材P91页例5.2.4所示。手工录入或电脑随机生成一段消息序列,实现线性分组码的编码的Matlab源程序。(1星) 实现对上述无差错的编码进行译码的Matlab源程序。(2星) 在上述编码后的码序列中,每隔6位产生一位或0位随机误差,然后采用伴随式纠错译码,恢复原来的消息序列。(2星) 5、友好界面。(3星) 实验报告在实验后一周内交给老师,报告单一律用A4纸写,以此单为封面,装订成册。 完成时间:2016年5月9 日 简要总结线性分组码编译码的基本原理及步骤; 分组码是一组固定长度的码组,可表示为(n , k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k 个监督位的作用就是实现检错与纠错。对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k

线性分组码的信道编码和译码

clear; clc; %编码 G=input('请输入生成矩阵G,例如:G=[1 0 1 1 1;0 1 1 0 1]\n G='); [k,n]=size(G); r=n-k; m=input('请输入需传送信息m,如m=[0 0 0 1 1 0 1 1]\n m='); l=length(m); if(mod(l,k)) disp('输入的信息有误'); else ge=l/k; %将输入序列转化成矩阵m temp1=[]; for i=1:ge temp1(i,:)=m(k*(i-1)+1:i*k); end m=temp1; %求校验矩阵H c=mod(m*G,2); A=G(:,k+1:n); H=[A',eye(r)]; disp('校验矩阵');H disp('译码矩阵');c end disp('敲回车键继续'); pause %解码 y=input('输入接收序列y,如:y=[0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0]\n y='); temp2=[]; for i=1:ge temp2(i,:)=y(1,n*(i-1)+1:i*n); end y=temp2 s=mod(y*H',2); e=s*pinv(H'); for i=1:ge for j=1:n if(e(i,j)>0.5-eps) e(i,j)=1; else e(i,j)=0; end end end cc=mod(y+e,2); %cc=xor(y,e) sc=cc(:,1:2); disp('差错图样'); e disp('估计值'); cc disp('译码序列'); sc

线性分组码编码的分析与实现

课程设计任务书 2011—2012学年第一学期 专业:通信工程学号:080110501 姓名:李琼 课程设计名称:信息论与编码课程设计 设计题目:线性分组码编码的分析与实现 完成期限:自2011 年12 月19 日至2011 年12 月25 日共 1 周一.设计目的 1、深刻理解信道编码的基本思想与目的; 2、理解线性分组码的基本原理与编码过程; 3、提高综合运用所学理论知识独立分析和解决问题的能力; 4、使用MATLAB或其他语言进行编程。 二.设计内容 给定消息组M及生成矩阵G,编程求解其线性分组码码字。 三.设计要求 编写的函数要有通用性。 四.设计条件 计算机、MATLAB或其他语言环境 五.参考资料 [1]曹雪虹,张宗橙.信息论与编码.北京:清华大学出版社,2007. [2]王慧琴.数字图像处理.北京:北京邮电大学出版社,2007. 指导教师(签字):教研室主任(签字): 批准日期:年月日

该系统是(6,3)线性分组码的编码的实现,它可以对输入的三位的信息码进行线性分组码编码。 当接收到的六位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。 关键词:编码;MA TLAB;纠错

1课程描述 0 2 设计原理 (1) 2.1 线性分组码的编码 (1) 2.1.1 生成矩阵 (1) 2.1.2 校验矩阵 (3) 2.2 伴随式与译码 (4) 2.2.1 码的距离及纠检错能力 (4) 2.2.2 伴随式与译码 (4) 3 设计过程 (5) 3.1 编码过程 (5) 3.2 仿真程序 (7) 3.4 结果分析 (11) 总结 (13) 致谢 (14) 参考文献 (15)

线性分组码编码的分析与实现

吉林建筑大学 电气与计算机学院 信息理论与编码课程设计报告 设计题目:线性分组码编码的分析与实现专业班级:电子信息工程121 学生姓名: 学号: 指导教师: 设计时间:2016.1.11-2016.1.22

第1章概述 1.1设计的作用、目的 《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。 通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。 1.2设计任务及要求 线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。 通过设计一组(7,3)线性分组码,来完成对任意序列的编码,根据生成矩阵形成监督矩阵,得到伴随式下,并根据其进行译码,同时验证工作的正确性,最基本的是要具备对输入的信息码进行编码,让它具有抗干扰的能力。 1. 理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法; 2. 掌握哈夫曼编码/费诺编码方法的基本步骤及优缺点; 3. 深刻理解信道编码思想与目的,理解线性分组码的基本原理与编码过程。 4. 能够使用MATLAB或其他语言进行编程,编写的函数要有通用性。1.3设计内容 已知一个(7,3)线性分组码的校验元与信息元有如下限定关系。设码字为 (c6 ,c5 , c4 , c3 , c2 , c1 , c0)。 ? ? ? ? ? ? ? ⊕ = ⊕ = ⊕ ⊕ = ⊕ = 2 1 6 1 5 2 1 4 2 3 c c c c c c c c c c c c c 求出标准校验矩阵、Q矩阵、标准生成矩阵,完成对任意信息序列(23个 许用码字)的编码。 当接收码字分别为(0000000),(0000001),(0000010),(0000100),(0001000), (0010000),(0100000),(1000000),(0100100)时,写出其伴随式S,以表格形式写出伴随式与错误图样E的对应关系,纠错并正确译码,当有两位错码时,假定为c5位和c2位发生错误。

线性分组码的编码与译码

· 实践教学 · 大学 计算机与通信学院 2014年秋季学期 计算机通信课程设计 题目:线性分组码(9,4)码的编译码仿真设计

专业班级:姓名:学号:指导教师:成绩:

摘要 该系统是(9,4)线性分组码的编码和译码的实现,它可以对输入的四位的信息码进行线性分组码编码,对于接收到的九位码字可以进行译码,从而译出四位信息码。 当接收到的九位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。 关键词:编码; 译码; 纠错

目录 摘要 (1) 目录 (2) 1. 信道编码概述 (2) 1.1信道模型 (2) 1.2 抗干扰信道编码定理及逆定理 (3) 1.3 检错与纠错的基本原理 (4) 1.4 限失真编码定理 (5) 2.线性分组码的编码 (6) 2.1 生成矩阵 (6) 2.2 校验矩阵 (9) 2.3 伴随式与译码 (10) 3. 线性分组码编码的Matlab仿真 (12) 3.1 程序流程图 (12) 3.2 程序执行结果 (12) 3.2 线性分组码译码的Matlab仿真 (13) 3.3结果分析 (15) 参考文献 (16) 总结 (17) 致谢 (18) 附录 (19)

前言 由于计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象,人们对数据传输和存储系统的可靠性提出来了越来越高的要求,经过长时间的努力,通过编译码来控制差错、提高可靠性的方式在信道传输中得到了大量的使用和发展,并形成了一门新的技术叫做纠错编码技术,纠错编码按其码字结构形式和对信息序列处理方式的不同分为两大类:分组码和卷积码。 目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。 对线性分组码的讨论都在有限域GF(2)上进行,域中元素为{0,1},域中元素计算为模二加法和模二乘法。分组码是一组固定长度的码组,可表示为(n , k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。 对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k

基于MATLAB的循环码实验报告

课程名称:信息论与编码 课程设计题目:循环码的编码和译码程序设计 指导教师: 系别:专业: 学号:姓名: 合作者 完成时间: 成绩:评阅人: 一、实验目的:

1、通过实验了解循环码的工作原理。 2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理 1、RS 循环码编译码原理与特点 设C 使某线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021Λ,它的循环 移位),,,(1032) 1(---=n n n c c c c C Λ也属于C ,则称该 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个 线性码具有以下的属性,则称为循环码:如果n 元组} ,,,{110-=n c c c c Λ是子空间S 的一个码字,则经过循环移位得到的},,,{201) 1(--=n n c c c c Λ也同样是S 中的一个 码字;或者,一般来说,经过j 次循环移位后得到的},,,,,,,{11011) (---+--=j n n j n j n j c c c c c c c ΛΛ也是 S 中的一个码字。 RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。 码长:12-=m n 信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d 最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1 循环码特点有: 1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。 2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变

(6-3)线性分组码编码分析与实现

吉林建筑大学 电气与电子信息工程学院 信息理论与编码课程设计报告 设计题目:线性分组码编码的分析与实现 专业班级:电子信息工程 学生姓名: 学号: 指导教师: 设计时间: 2014.11.24-2014.12.5

1.1 第1章 概述 1.1 设计的作用、目的 《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。 通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。 1.2 设计任务及要求 设计一个(6, 3)线性分组码的编译码程序:完成对任意序列的编码,根据生成矩阵形成监督矩阵,得到伴随式,并根据其进行译码,同时验证工作的正确性。 1.理解信道编码的理论基础,掌握信道编码的基本方法; 2.掌握生成矩阵和一致校验矩阵的作用和求解方法; 3.针对线性分组码分析其纠错能力,并能够对线性分组码进行译码; 4.能够使用MATLAB 或其他语言进行编程,实现编码及纠错,编写的函数要有通用性。 1.3设计内容 已知一个(6,3)线性分组码的Q 矩阵:设码字为(c 5, c 4, c 3, c 2, c 1, c 0) 011101110Q ?? ??=?? ???? 求出标准生成矩阵和标准校验矩阵,完成对任意信息序列(23个许用码字)的编码。 当接收码字R 分别为(000000), (000001), (000010), (000100), (001000), (010000), (100000), (100100)时,写出其伴随式S ,以表格形式写出伴随式与错误图样E 的对应关系。纠错并正确译码,当有两位错码时,假定c 5位和c 2位发生错误。

线性分组码实验报告(DOC)

综合性设计性实验报告 专业: 学号: 姓名: 实验所属课程:信息论与编码 实验室(中心):信息技术软件实验室 指导教师: 2

教师评阅意见: 签名:年月日实验成绩: 一、题目 线性分组码编译码实验 二、仿真要求 1.分别用不同的生成矩阵进行(7,4)线性分组码的编码,经调制解调后译 码,并比较两种线性分组码的纠错能力。 2.掌握线性分组码的编码原理、编码步骤和译码方法。 3.熟悉matlab软件的基本操作,学会用matlab软件进行线性分组码的编码 和译码。 三、仿真方案详细设计 编码: 本实验采用的是(7,4)线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(3×4)的矩阵,由监督方程和(4×4)的单位矩阵构成,生成矩阵G为(4×7)的矩阵,由(4×4)的单位矩阵和监督矩阵的转置矩阵构成。实现过程为: 1、将要编码的序列先整形,整为4列 2、如果序列不能被4整除在后边补0使其能被4整除 3、将整形后的序列与生成矩阵G相乘即得到编码后的码字 在本实验中,分别生成两种生成矩阵,在产生了生成矩阵后根据输入的四位信息位和生成矩阵相乘即可得到编码矩阵。

译码: 在译码过程中,我们利用错误图样和伴随式来进行纠错。 1、设一个接收码字矩阵为R,R*H'=S(模2乘),则S为码字对应的伴随 式矩阵如果S=0则说明接受码字无差错; 2、如果S不为0,查看矩阵S中不为0的那行所在行数,该行即收码字错 误所在行i; 3、将S转置,将不为0的一列与H每一列进行比较,找到H中相同列,该 列的列数即为错误所在列; 4、由步骤2和3得到错误具体位置,模2加对应的错误图样就可得到正确 码字。 BPSK调制: BPSK调制利用载波的相位变化来传递数字信息,振幅和频率保持不变。双极性的全占空矩形脉冲序列与正弦载波相乘就得到调制信号。因此进行调制时首先进行码形变换变为双极性的,再经乘法器与载波相乘得到调制信号。其具体实现方法如下: 1、将0、1序列变为-1、1序列; 2、将序列与载波相乘,为‘1’时与载波相位相同,为‘-1’时与载波相位相反。 BPSK解调: 解调是产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号,进而通过抽样判决得出原始信号。解调是调制的逆过程,其作用是从接受信号中恢复出原基带信号。解调的方法分为两类:相干解调和非相干解调(如包络检波)。相干解调也称同步检波,适用于所有线性调制信号的解调。其关键是必须在已调信号的接收端产生与信号载波同频同相的本地载波。本次仿真实验采用的是相干解调法,调制信号与想干载波相乘,经过低通滤波器,再抽样判决得到原信号。通过产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号,然后通过低通滤波器滤波器再抽样判决,得出解调后的原始信号。

基于matlab线性分组码实验设计

重庆交通大学 信息论与编码综合设计实验报告 班级:_________________ 级 ______ 班姓名:_____________________________ 学号:_____________________________ 实验项目名称:线性分组码编译码实验 实验项目性质: _______ 设计性实验_________ 实验所属课程:信息论与编码理论 实验室(中心):___ 网络实验中心________ 指导教师: _________________________________ 实验完成时间: __________ 年 _____ 月 _____ 日

一、设计题目 线性分组码编译码实验 二、实验目的: 1.掌握线性分组码的编码原理、编码步骤和译码方法 2.熟悉matlab软件的基本操作,学会用matlab软件进行线性分组码的编码和译码 三、实验主要内容及要求: 设计(15,11)或(255, 247)线性分组码,利用随机生成的二进制序列及BPSK调制方式,比较使用信道编码与未使用信道编码的误比特率曲线 四、实验设备及软件: PC机一台、Matlab软件 该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号① 采用线性

分组码编码和译码,编号②为不采用信道编译码,通过这两种方法的对比,得出误码率曲线。 1.线性分组码编码 本实验采用的是 (15,11)的线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(4X11 )的矩阵,由监督方程和(4X4) 的单位矩阵构成,生成矩阵G为(11X15)的矩阵,由(11X11)的单位矩阵和监督矩阵的转置矩阵构成。 具体实现方法如下: ①将要编码的序列先整形,整为11 列 ②如果序列不能被11 整除在后边补0 使其能被11 整除 ③将整形后的序列与生成矩阵G相乘即得到编码后的码字其实现代码如下: function [n,C]=xxbm(n) a=randint(1,n); % 生成01 随机序列 disp(' 编码序列:'); disp(a); subplot(3,2,1); stairs(a); axis([1 length(a) -0.5 1.5]) title(' 编码序列'); %判断生成的随机序列个数是否是11 的整数倍 if length(a)/11==fix(length(a)/11) % 随机序列个数是11 的整数倍,直接编码b=reshape(a,11,(length(a)/11)); M=b'; F=eye(11); S=[0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1]; K=eye(4); G=[F,S]; H=[S',K];

基于matlab线性分组码实验设计

一、 设计题目 线性分组码编译码实验 二、 实验目的: 1. 掌握线性分组码的编码原理、编码步骤和译码方法 2. 熟悉matlab 软件的基本操作,学会用matlab 软件进行线性分组码的编 码和译码 三、 实验主要内容及要求: 设计(15,11)或(255,247)线性分组码,利用随机生成的二进制序 列及BPSK 调制方式,比较使用信道编码与未使用信道编码的误比特率曲线 四、 实验设备及软件: PC 机一台、Matlab 软件 五、 设计方案 ① (15,11)线性分 ② ① ② 该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号①采用线性分组码编码和译码,编号②为不采用信道编译码,通过这两种方法的对比,得出误码率曲线。 1. 线性分组码编码 本实验采用的是(15,11)的线性分组码,线性分组码的编码由监督矩阵 信源编码 信道编码 BPSK 调制 信道传输 噪声 解调 信道译码 信源译码 统计误码率

和生成矩阵实现,监督矩阵H为(4×11)的矩阵,由监督方程和(4×4)的单位矩阵构成,生成矩阵G为(11×15)的矩阵,由(11×11)的单位矩阵和监督矩阵的转置矩阵构成。具体实现方法如下: ①将要编码的序列先整形,整为11列 ②如果序列不能被11整除在后边补0使其能被11整除 ③将整形后的序列与生成矩阵G相乘即得到编码后的码字 其实现代码如下: function [n,C]=xxbm(n) a=randint(1,n); %生成01随机序列 disp('编码序列:'); disp(a); subplot(3,2,1); stairs(a); axis([1 length(a) -0.5 1.5]) title('编码序列'); %判断生成的随机序列个数是否是11的整数倍 if length(a)/11==fix(length(a)/11) %随机序列个数是11的整数倍,直接编码 b=reshape(a,11,(length(a)/11)); M=b'; F=eye(11); S=[0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1]; K=eye(4); G=[F,S]; H=[S',K]; C=rem(M*G,2); disp('生成矩阵G:');

线性分组码-习题

1. 已知一个(5, 3)线性码C 的生成矩阵为: 11001G 0 11010 1 11?? ??=?????? (1)求系统生成矩阵; (2)列出C 的信息位与系统码字的映射关系; (3)求其最小Hamming 距离,并说明其检错、纠错能力; (4)求校验矩阵H ; (5)列出译码表,求收到r =11101时的译码步骤与译码结果。 解: (1)线性码C 的生成矩阵经如下行变换: 23132110011 00110110101101001110 0111100111 001101101010100011100111???? ??????????→??? ????????? ??????????????→??? ????????? 将第、加到第行 将第加到第行 得到线性码C 的系统生成矩阵为 ?? ?? ??????=111000*********S G (2)码字),,,(110-=n c c c c 的编码函数为 [][][]111000*********)(210m m m m f c ++== 生成了的8个码字如下 (3) 最小汉明距离d =2,所以可检1个错,但不能纠错。

(4) 由],[],,[)()(k n T k n k k n k k n I A H A I G --?-?-==,得校验矩阵 ?? ????=1010101111H (5) 消息序列m =000,001,010,011,100,101,110,111,由c =mGs 得码字序列 c 0=00000, c 1=00111,c 2=01010, c 3=01101, c 4=10011, c 5=10100,c 6=11001, c 7=11110 则译码表如下: 当接收到r =(11101)时,查找码表发现它所在的列的子集头为(01101),所以将它译为c =01101。 2.设(7, 3)线性码的生成矩阵如下 010101000101111001101G ?? ??=?? ???? (1)求系统生成矩阵; (2)求校验矩阵; (3)求最小汉明距离; (4)列出伴随式表。 解: (1)生成矩阵G 经如下行变换 13 23 01010101 0011010010111001011110011010 10101010011011 0011010010111010101001010100010111???? ????????→??? ????????? ?????????????→??? ????????? 交换第、行交换第、行 得到系统生成矩阵: 100110101010100010111S G ?? ??=?? ???? (2)由],[],,[)()(k n T k n k k n k k n I A H A I G --?-?-==,得校验矩阵为

基于MATLAB的线性分组码编译码仿真实现设计说明书

信息工程学院通信工程系 设计题目:基于MATLAB的线性分组码 编译码仿真设计 班级:10通信班 学号: 姓名: 指导老师: 2013 年11 月15 日 成绩:

摘要 该系统是(6,3)线性分组码的编码和译码的实现,它可以对输入的三位的信息码进行线性分组码编码,对于接收到的六位码字可以进行译码,从而译出三位信息码。 当接收到的六位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。 关键词:编码; 译码; 纠错

目录 前言 (2) 第1章设计目标 (2) 第2章 MATLAB简介 (3) 第3章基本原理 (3) 3.1 线性分组码的编码 (3) 3.1.1 生成矩阵 (3) 3.1.2 校验矩阵 (5) 3.2 伴随式与译码 (6) 3.2.1 码的距离及纠检错能力 (6) 3.2.2 伴随式与译码 (6) 第4章推导过程 (7) 4.1 编码过程 (7) 4.2 译码过程 (9) 第5章仿真程序及结果分析 (11) 5.1 仿真程序 (11) 5.2 仿真结果图 (13) 5.3 结果分析 (15) 参考文献 (16) 总结 (17)

前言 近年来,随着计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,人们对数据传输和存储系统的可靠性提出了越来越高的要求。因此,如何控制差错、提高数据传输和存储的可靠性,成为现代数字通信系统设计的重要课题。 目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。 对线性分组码的讨论都在有限域GF(2)上进行,域中元素为{0,1},域中元素计算为模二加法和模二乘法。分组码是一组固定长度的码组,可表示为(n , k ),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k 个信息位被编为n 位码组长度,而n-k 个监督位的作用就是实现检错与纠错。 对于长度为n 的二进制线性分组码,它有种2n 可能的码组,从2n 种码组中,可以选择M=2k 个码组(k

线性分组码的matlab实现

重庆交通大学信息科学与工程学院综合性设计性实验报告 专业:通信工程专业12级 学号:631206040105 姓名:刘志坤 实验所属课程:信息论与编码 实验室(中心):软件与通信实验中心 指导教师:黄大荣 2015年4月

线性分组码的matlab 实现 一、实验目的和要求。 信道编码的目的是为了改善通信系统的传输质量。按照监督码元与信息码元之间的关系,有线性码和非线性码。线性码的特点是监督码元与信息码元之间有线性关系,可用一组线性代数方程将其联系起来。 本实验用Matlab 语言编程实现线性分组码。 二、实验原理。 线性分组码的编码包括两个基本步骤:首先将信源的输出序列分为k 位一组的消息组(也称信息组,简称消息或信息);然后信道编码器按照一定的编码规则将k 位消息变换为n 个码元的码字。一个(n,k)线性分组码,如果码的数域为GF(m),即每一个码元可能有m 种取值,则信源可发出k m 种不同的消息。对于(n,k)码,n 表示码长,k 表示信息码元的维数,也就是子空间的维数,设M=[m 1,m 2,…,m k ]是输入纠错码编码器的信息,则由纠错码编码器输出的码字 C=MG G 为该(n,k)码的生成矩阵。 如果只考虑信道编码,则纠错码通信系统模型可归结为如下模型: 教师评阅意见: 签名: 年 月 日 实验成绩: 信源 纠错编码器 信道 纠错译码器 信宿 干扰

线性分组码(n ,k )中许用码字(组)为2k 个。定义线性分组码的加法为模二加法,乘法为二进制乘法。即1+1=0、1+0=1、0+1=1、0+0=0;1×1=1、1×0=0、0×0=0、0×1=0。且码字与码字的运算在各个相应比特位上符合上述二进制加法运算规则。 线性分组码具有如下性质(n ,k )的性质: 1、封闭性。任意两个码组的和还是许用的码组。 2、码的最小距离等于非零码的最小码重。 对于码组长度为n 、信息码元为k 位、监督码元为r =n -k 位的分组码,常记作(n ,k )码,如果满足2r -1≥n ,则有可能构造出纠正一位或一位以上错误的线性码。 由于每个码字都是一个二进制的n 重,及二进制n 维线性空间Vn 中的一个矢量,因此码字又称为码矢。线性分组码的一个重要参数是码率r=k/n,它说明在一个码字中信息位所占的比重,r 越大,说明信息位所占比重越大,码的传输信息的有效性越高。由于(n,k)线性分组,线性分组码的2k 个码字组成了n 维线性空间Vn 的一个K 维子空间。因此这2k 个码字完全可由k 个线性无关的矢量所组成。 对于分组码,有着以下结论: 1.检测e 个错码,则要求最小码距1min +≥e d ; 2.纠正t 个错码,则要求最小码距12min +≥t d ; 3.纠正t 个错码,同时检测e(e>t)个错码,则要求最小码距1min ++≥t e d ; 4.纠正t 个错码和p 个删除,则要求最小码距12min ++≥p t d 三、实验步骤 本次试验用Matlab 语言编程实现(10,4)线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H 为(4×4)的矩阵,由监督方程得出,生成矩阵G 为已定义(10×4)的矩阵。具体实现方法如下: ①将要编码的序列先整形,整为4列 ②如果序列不能被4整除在后边补0使其能被4整除 ③将整形后的序列与生成矩阵G 相乘即得到编码后的码字 利用Matlab 函数找出所得分组码的最小距离。 四、程序代码: 1.(7,4)分组码 clear all ; clc; G2 =[1 0 0 0 1 0 1; 0 1 0 0 1 1 1; 0 0 1 0 1 1 0; 0 0 0 1 0 1 1];%生成矩阵 MSG=[0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1;0 1 0 0;0 1 0 1;0 1 1 0;0 1 1 1; 1 0 0 0;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1];%输入信息

实验六 线性分组码的信道编码和译码

1.MATLAB 2. MATLAB 1.256M P4CPU 2.MATLAB 1. K N NK NK N K r=NK52 N=5K=2f

c()=m()G G 30T CH 0T GH H H G : C y 2) e S (5,2) 21 2.1a G b G nk H;c 2a G b G nk H

c S d e e c=y+e 1. 2.G 3.G 1. 2. close all; clc; G=input('G, :G=[10111;01101]\n G='); G; [k,n]=size(G); r=n-k; m=input('m, m=[00011011]\n m='); l=length(m); if(mod(l,k)) disp(''); else ge=l/k; temp1=[]; for i=1:ge temp1(i,:)=m(k*(i-1)+1:i*k); end m=temp1; c=mod(m*G,2); A=G(:,k+1:n);H=[A',eye(r)]; disp(''); H disp(''); c end disp(''); pause y=input('y,:y=[00 00001101101111001 0]\n y='); temp2=[]; for i=1:ge temp2(i,:)=y(1,n*(i-1)+1:i*n); end y=temp2 s=mod(y*H',2); e=s*pinv(H'); for i=1:ge for j=1:n if(e(i,j)>0.5-eps) e(i,j)=1;

线性分组码的编码与译码

··················· 实践教学 ··················· 大学 计算机与通信学院 2014年秋季学期 计算机通信课程设计 题目:线性分组码(9,4)码的编译码仿真设计 专业班级: 姓名: 学号: 指导教师: 成绩:

摘要 该系统是(9,4)线性分组码的编码和译码的实现,它可以对输入的四位的信息码进行线性分组码编码,对于接收到的九位码字可以进行译码,从而译出四位信息码。 当接收到的九位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。 关键词:编码; 译码; 纠错

目录 摘要 (1) 目录 (2) 1. 信道编码概述 (2) 1.1信道模型 (2) 1.2 抗干扰信道编码定理及逆定理 (3) 1.3 检错与纠错的基本原理 (4) 1.4 限失真编码定理 (5) 2.线性分组码的编码 (6) 2.1 生成矩阵 (6) 2.2 校验矩阵 (9) 2.3 伴随式与译码 (10) 3. 线性分组码编码的Matlab仿真 (12) 3.1 程序流程图 (12) 3.2 程序执行结果 (12) 3.2 线性分组码译码的Matlab仿真 (13) 3.3结果分析 (15) 参考文献 (16) 总结 (17) 致谢 (18) 附录 (19)

前言 由于计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象,人们对数据传输和存储系统的可靠性提出来了越来越高的要求,经过长时间的努力,通过编译码来控制差错、提高可靠性的方式在信道传输中得到了大量的使用和发展,并形成了一门新的技术叫做纠错编码技术,纠错编码按其码字结构形式和对信息序列处理方式的不同分为两大类:分组码和卷积码。 目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。 对线性分组码的讨论都在有限域GF(2)上进行,域中元素为{0,1},域中元素计算为模二加法和模二乘法。分组码是一组固定长度的码组,可表示为(n , k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。 对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k

线性度实验报告doc

线性度实验报告 篇一:传感器实验报告 传感器实验报告(二) 自动化1204班蔡华轩 UXX13712 吴昊 UXX14545 实验七: 一、实验目的:了解电容式传感器结构及其特点。 二、基本原理:利用平板电容C=εA/d 和其它结构的关系式通过相应的结构和测量电路可以选择ε、A、d 中三个参数中,保持二个参数不变,而只改变其中一个参数,则可以有测谷物干燥度(ε变)测微小位移(变d)和测量液位(变 A)等多种电容传感器。 三、需用器件与单元:电容传感器、电容传感器实验模板、测微头、相敏检波、滤波模板、数显单元、直流稳压源。 四、实验步骤: 1、按图6-4 安装示意图将电容传感器装于电容传感器实验模板上。 2、将电容传感器连线插入电容传感器实验模板,实验线路见图7-1。图 7-1 电容传感器位移实验接线图 3、将电容传感器实验模板的输出端V01 与数显表单元Vi 相接(插入主控箱Vi 孔),Rw 调节到中间位置。 4、接入±15V 电源,旋动测微头推进电容传感器动极

板位置,每间隔0.2mm 图(7-1) 五、思考题: 试设计利用ε的变化测谷物湿度的传感器原理及结构,并叙述一下在此设计中应考虑哪些因素? 答:原理:通过湿度对介电常数的影响从而影响电容的大小通过电压表现出来,建立起电压变化与湿度的关系从而起到湿度传感器的作用;结构:与电容传感器的结构答大体相同不同之处在于电容面板的面积应适当增大使测量灵敏度更好;设计时应考虑的因素还应包括测量误差,温度对测量的影响等 六:实验数据处理 由excle处理后得图线可知:系统灵敏度S=58.179 非线性误差δf=21.053/353=6.1% 实验八直流激励时霍尔式传感器位移特性实验 一、实验目的:了解霍尔式传感器原理与应用。 二、基本原理:霍尔式传感器是一种磁敏传感器,基于霍尔效应原理工作。 它将被测量的磁场变化(或以磁场为媒体)转换成电动势输出。 根据霍尔效应,霍尔电势UH=KHIB,当霍尔元件处在梯度磁场中

实验三、线性分组码的编译码

信息论与编码实验报告 1、认真阅读课本中关于线性分组码的基本原理及特点等内容,并简要写出其基本原理及特点;

解:基本原理:对信源编码器输出的D 进制序列进行分组,设分组长度为k ,相应的码字表示为),,,(12m m m k M ???=→,其中每个码元()k i m i ≤≤1都是D 进制的显然这样的码字共有k D 个。 特点:一个()k n ,线性分组码中非零码字的最小重量等于该码的最小距离min d 。 2、写出(7,4)线性分组码编解码基本步骤,画出程序流程图; 编码流程图 译码流程图 (7,4)汉明码的编码就是将输入的4 位信息码M=[ 3456a a a a ]加上3 位监督码012b b b 从而编成7位汉明码[6a 012345,,,,,a a a a a a ],编码输出B=[6a 5a 4a 3a 2a 1a 0a ].由式A = M ·G=[3456a a a a ]·G 可知,信息码M 与生成矩阵G 的乘积就 是编好以后的(7,4)汉明码

3、实现(7,4)线性分组码编解码的Matlab源程序;构造BSC传输信道中采用(7,4)线性分组码的Simulink仿真程序。 (7,4)汉明码的编码程序: library ieee; use ieee.std_logic_1164.all; entity bm is port(a:in std_logic_vector(3 downto 0); but std_logic_vector(6 downto 0)); end ; architecture one of bm is begin b(6)<=a(3); b(5)<=a(2); b(4)<=a(1); b(3)<=a(0); b(2)<=a(3) xor a(2) xor a(1); b(1)<=a(3) xor a(2) xor a(0); b(0)<=a(3) xor a(1) xor a(0); end; (7,4)汉明码的译码程序: library ieee; use ieee.std_logic_1164.all; entity ym is port(a:in std_logic_vector(6 downto 0); sut std_logic_vector(2 downto 0); but std_logic_vector(3 downto 0); cut std_logic_vector(2 downto 0)); end ; architecture one of ym is begin process(a) variable ss:std_logic_vector(2 downto 0); variable bb:std_logic_vector(6 downto 0); begin ss(2):=a(6) xor a(5) xor a(4) xor a(2); ss(1):=a(6) xor a(5) xor a(3) xor a(1); ss(0):=a(6) xor a(4) xor a(3) xor a(0); bb:=a; if ss> "000" then

相关文档
最新文档