线性分组码的编码与译码
- 格式:doc
- 大小:271.50 KB
- 文档页数:28
信息论与编码实验报告1、认真阅读课本中关于线性分组码的基本原理及特点等内容,并简要写出其基本原理及特点;解:基本原理:对信源编码器输出的D 进制序列进行分组,设分组长度为k ,相应的码字表示为),,,(12m m m k M ∙∙∙=→,其中每个码元()k i m i≤≤1都是D 进制的显然这样的码字共有kD 个。
特点:一个()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 isport(a:in std_logic_vector(3 downto 0);but std_logic_vector(6 downto 0));end ;architecture one of bm isbeginb(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 isport(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 isbeginprocess(a)variable ss:std_logic_vector(2 downto 0);variable bb:std_logic_vector(6 downto 0);beginss(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" thencase ss iswhen "001" =>bb(0):= not bb(0);c<="000";when "010" =>bb(1):= not bb(1);c<="001";when "100" =>bb(2):=not bb(2);c<="010";when "011" =>bb(3):=not bb(3);c<="011";when "101" =>bb(4):=not bb(4);c<="100";when "110" =>bb(5):=not bb(5);c<="101";when "111" =>bb(6):=not bb(6);c<="110";when others => null;c<="111";end case;else b<= a(6)&a(5)&a(4)&a(3);end if;s<=ss;b<=bb(6)&bb(5)&bb(4)&bb(3);end process;end;4、讨论(7,4)线性分组码的最小码距与码重及纠错能力的关系,讨论采用纠错编码和不采用纠错编码对传输系统的影响。
实践教学大学计算机与通信学院2014年秋季学期计算机通信课稈设计题目:线性分组码(9 , 4)码的编译码仿真设计专业班级:_______________________________姓名:_________________________________________学号:_______________________________________指导教师:______________________________________成绩:______________________________________________摘要该系统是(9, 4)线性分组码的编码和译码的实现,它可以对输入的四位的信息码进行线性分组码编码,对于接收到的九位码字可以进行译码,从而译出四位信息码。
当接收到的九位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。
只有特定位有两位错误时,才能纠正两位错误。
这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。
关键词:编码;译码;纠错摘要 目录1. 信道编码概述2.•…1.1信道模型 ............................................................... 2•…1.2抗干扰信道编码定理及逆定理 ............................................ 3…1.3检错与纠错的基本原理 .................................................. 4•…1.4限失真编码定理 ........................................................ 5•…2. 线性分组码的编码 ........................................................... 6 _2.1生成矩阵 ............................................................... 6•…2.2校验矩阵 ............................................................... 9•…2.3伴随式与译码 ......................................................... 1.0....3. 线性分组码编码的 Matlab 仿真 ............................................... 1.2..3.1程序流程图 ............................................................ 1.2....3.2程序执行结果 ......................................................... 12....3.2线性分组码译码的 Matlab 仿真 .......................................... 1.3.3.3结果分析 .............................................................. 1.5.... 参考文献 .................................................................... .1.6..... 总结 ......................................................................... 1.7.... 致谢 ......................................................................... 1.8.... 附录目录19刖言由于计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象,人们对数据传输和存储系统的可靠性提出来了越来越高的要求,经过长时间的努力,通过编译码来控制差错、提高可靠性的方式在信道传输中得到了大量的使用和发展,并形成了一门新的技术叫做纠错编码技术,纠错编码按其码字结构形式和对信息序列处理方式的不同分为两大类:分组码和卷积码。
一、实验目的1、通过实验掌握线性分组码的编码原理2、通过实验掌握线性分组码的译码3、了解编码与检错能力之间的关系二、实验内容1、自行设置线性分组码或汉明码的参数,计算所设计出的线性分组码或汉明码的所有码字集合;2、利用库函数译码或利用通信工具箱设计译码模块译码;3、整理好所有的程序清单或设计模块,并作注释。
三、实验结果1、写出产生(3,1)汉明码的生成矩阵,给出生成码的源程序,并给出运行结果。
(1)、源程序function f=hanmingencod(a) %对信息元a进行编码G=[1 1 1]; %(3,1)的生成矩阵t=input('输入0或1:'); %t=0时产生(3,1),汉明编码所有码字t=1时对输入序列进行编码if t==1;a=input('输入信息元序列:'); %当t=0时,则用户手动输入信息元序列c=mod(a*G,2); %对应码字disp('编码后序列为:');disp(c); %显示编码后的结果elsedisp('(3,1)汉明系统为:');%当t=0时,对for循环得到的信息元序列进行编码for i=0:1%进行for循环,得到信息元序列a=dec2bin(i,1); %生成信息源序列c=mod(a*G,2); %对信息元a进行编码disp(a); %显示信息元disp('对应码字为:');disp(c); %显示编码结果endend(2)运行结果:输入0或者1:0(3,1)汉明系统码为:对应码字为:0 0 01对应码字为: 1 1 1输入0或者1:1输入信息元序列:0编码后序列为: 0 0 0输入0或者1:1输入信息元序列:1编码后序列为: 1 1 1(3)、计算生成矩阵:由(3,1)汉明码可知:n=3,k=1;即信源符号1位一组:{}(),0,1,0,1,2,3;i i u u u i =∈=码符号3位一组:{}210(,,),0,1,0,1,2,3,4,5,6;j c c c c c j =∈=则可得其生成矩阵:[]1,1,1G = 或者校验矩阵H=⎥⎦⎤⎢⎣⎡110110=⎥⎦⎤⎢⎣⎡100111 所以生成矩阵[]1,1,1G =2、用encode函数对随机产生的序列进行汉明编码,给出编码结果。
******************实践教学******************兰州理工大学计算机与通信学院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位监督元,监督元是随所传输的信息元而改变的。
接收端正式通过监督元和信息元之间的规律性来发现并纠正错误的。
线性分组码的编码方法0 引言随着通信技术的飞速发展,数字信息的存储和交换日益增加,对于数据传输过程中的可靠性要求也越来越高,数字通信要求传输过程中所造成的数码差错足够低。
引起传输差错的根本原因是信道内的噪声及信道特性的不理想。
要进一步提高通信系统的可靠性,就需采用纠错编码技术。
1线性分组码线性分组码是差错控制编码的一种,它的编码规则是在k 个信息位之后附加r=(n-k )个监督码元,每个监督码元都是其中某些信息位的模2和,即(n-k )个附加码元是由信息码元按某种规则设计的线性方程组运算产生,则称为线性分组码(linear block code )。
目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码元,因此以下对线性分组码的讨论都是在有限域GF (2)上进行的,域中元素为0、1。
以(7,3)线性分组码为例,(7,3)线性分组码的信息组长度k=3,在每个信息组后加上4个监督码元,每个码元取值“0”或“1”。
设该码字为(C 6,C 5,C 4,C 3,C 2,C 1,C 0)。
其中C 6,C 5,C 4是信息位,C 3,C 2,C 1,C 0是监督位,监督位可以按下面的方程计算:463C C C +=4562C C C C ++=(1)561C C C += 450C C C +=以上四式构成了线性方程组,它确定了由信息位得到监督位的规则,称为监督方程或校验方程。
由于所有的码字都按同一规则确定,因此上式又称为一致监督方程或一致校验方程,这种编码方法称为一致监督编码或称一致校验编码。
由式(1)可以得出,每给出一个3位的信息组,就可以编出一个7位的码字,同理可以求出其它7个信息组所对应的码字。
2 生成矩阵和一致校验矩阵(n ,k )线性分组码的编码问题,就是如何从n 维线性空间V n 中,找出满足一定要求的,由2k个矢量组成的k 维线性子空间;或者说在满足一定条件下,如何根据已知的k 个信息元求得n-k 个校验元。
···················实践教学···················大学计算机与通信学院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<n)组成一种码。
这样,一个k比特信息的线性分组码可以映射到一个长度为n码组上,该码组是从M=2k个码组构成的码集中选出来的,这样剩下的码组就可以对这个分组码进行检错或纠错。
1. 信道编码概述1.1信道模型信息必须首先转换成能在信道中传输或存储的信息后才能通过信道传送给收信者。
在信息传输过程中,噪声或干扰主要是从信道引入的,它使信息通过信道传输后产生错误和失真。
因此信道的输入和输出之间一般不是确定的函数关系,而是统计依赖的关系。
只要知道信道的输入信号、输出信号以及它们之间的统计依赖关系,就可以确定信道的全部特性。
信道的种类很多,这里只研究无反馈、固定参数的单用户离散信道。
1.离散信道的数学模型离散信道的数学模型一般如图6.1所示。
图中输入和输出信号用随机矢量表示,输入信号为X = (X 1, X 2,…, X N ),输出信号为Y = (Y 1, Y 2,…, Y N );每个随机变量X i 和Y i 又分别取值于符号集A ={a 1, a 2, …, a r }和B ={b 1, b 2, …, b s },其中r 不一定等于s ;条件概率P (y |x )描述了输入信号和输出信号之间的统计依赖关系,反映了信道的统计特性。
),...,,(21N X X X X = )|(x y P ),...,,(21N Y Y Y Y =∑=1)|(x y P图1.1 离散信道模型根据信道的统计特性即条件概率P (y |x ) 的不同,离散信道可以分为三种情况:(1)无干扰信道。
信道中没有随机干扰或干扰很小,输出信号Y 与输入信号X 之间有确定的一一对应的关系。
(2)有干扰无记忆信道。
实际信道中常有干扰,即输出符号与输入符号之间没有确定的对应关系。
若信道任一时刻的输出符号只统计依赖于对应时刻的输入符号,而与非对应时刻的输入符号及其他任何时刻的输出符号无关,则这种信道称为无记忆信道。
(3)有干扰有记忆信道。
这是更一般的情况,既有干扰又有记忆,实际信道往往是这种类型。
在这一类信道中某一瞬间的输出符号不但与对应时刻的输入符号有关,而且与此前其他时刻信道的输入符号及输出符号有关,这样的信道称为有记忆信道。
2.单符号离散信道的数学模型单符号离散信道的输入变量为X ,取值于{a 1, a 2, …, a r },输出变量为Y ,取值于{b 1, b 2, …, b s },并有条件概率P (y |x )= P (y=b j |x=a i )= P (b j |a i ) (i =1,2,…,r ;j =1,2,…,s )这一组条件概率称为信道的传递概率或转移概率。
因为信道中有干扰(噪声)存在,信道输入为x =a i 时,输出是哪一个符号y ,事先无法确定。
但信道输出一定是b 1, b 2, …, b s 中的一个,即有∑==s j i j a bP 11)|( (i =1,2,…,r )(1-1) 由于信道的干扰使输入符号x 在传输中发生错误,所以可以用传递概率P (b j |a i );,,2,1(r i =),,2,1s j =来描述干扰影响的大小。
因此,一般简单的单符号离散信道的数学模型可以用概率空间[Y x y P X ),|(,]加以描述。
另外,也可以用图来描述,如图1.2所示。
⎪⎪⎪⎩⎪⎪⎪⎨⎧a a X 21 Yb b b s ⎪⎪⎪⎭⎪⎪⎪⎬⎫21定义1.1 已知发送符号为a i ,通过信道传输接收到的符号为b j 的概率P (b j |a i )称为前向概率。
已知信道输出端接收到的符号为b j ,而发送符号为a i 的概率P (a i |b j ),称为后向概率。
有时,也把P (a i )称为输入符号的先验概率(即在接收到一个输出符号以前输入符号的概率),而对应地把P (a i |b j )称为输入符号的后验概率(在接收到一个输出符号以后输入符号的概率)。
为了讨论方便,下面列出本章讨论中常用的一些关于联合概率和条件概率的关系:(1) 设输入和输出符号的联合概率为P (x = a i , y = b j )=P (a i b j ),则有)|()()|()()(j i j i j i j i b a P b P a b P a P b a P == (2) ∑==r i i j i j a b P a P b P 1)|()()( (s j ,,1 =)。
(3) 根据贝叶斯定律,可得后验概率与先验概率之间的关系)()()|(j j i j i b P b a P b a P = (0)(≠b P j ) =∑=r i ij i i j i a b P a P a b P a P 1)|()()|()( (s j r i ,,2,1;,,2,1 ==)1.2 抗干扰信道编码定理及逆定理 定理1.1 有噪信道编码定理设离散无记忆信道[X ,P (y |x ),Y ], P (y |x )为信道传递概率,其信道容量为C 。
当信息传输率R <C 时,只要码长n 足够长,总可以在输入的符号集中找到2nR 个码字组成的一组码和相应的译码规则,使译码的错误概率任意小(P E 0→)。
在定理6.1中,信道容量C 是平均互信息量的最大值),(max )(Y X I C x p = 其单位是“bit/符号”。
定理1.2 有噪信道编码逆定理(定理6.1的逆定理)设离散无记忆信道[X ,P (y |x ),Y ],其信道容量为C 。
当信息传输率R >C 时,则无论码长n 多长,均找不到一种编码2nR ,使译码错误概率任意小。
定理1.1和定理1.2统称为申农第二定理,它是一个关于有效编码的存在性定理,它具有根本性的重要意义,它说明错误概率趋于零的好码是存在的。
它有助于指导各种通信系统的设计,有助于评价各种通信系统及编码的效率。
申农1948年发表申农第二定理后,科学家就致力于研究信道中的各种易于实现的实际编码方法,赋予码以各种形式的代数结构,出现了各种形式的代数编码、卷积码、循环码等。
1.3 检错与纠错的基本原理在申农第二定理发表后,很长一段时间内人们都在探寻能够简单、有效地编码和译码的好码。
由此形成了一整套纠错码理论。
在此只简单地介绍检错和纠错的一些基本概念及基本原理。
在信息处理过程中,为了保持数据的正确性应对信息进行编码使其具有检错纠错能力,这种编码称为语法信息编码。
它的基本思想是引入剩余度,在传输的信息码元后增加一些多余的码元,以使信息损失或错误后仍能在接收端恢复。
通常将要处理的信息称为原信息,将原信息转化为数字信息后再进行存储、传输等处理过程称为传送。
工程上最容易实现的是二元数字信息(或二元码信息)的传送。
所谓二元数字信息就是由二元数域F 2={0,1}中的数字0与1组成的数组或向量。
定义1.3 设X =(x 1, x 2,…, x n ),Y =(y 1, y 2,…, y n ),x i ∈F 2,y i ∈F 2,i =1,…, n ,称X 和Y 对应分量不相等的分量个数为X 和Y 的汉明(Hamming )距离,记为d (X , Y )。
记则 d (X , Y )= d (x 1, y 1)+ d (x 2, y 2)+…+ d (x n , y n )容易证明以下定理。
定理1.4 设X 和Y 是长为n 的二元码字,则(1)n Y X d ≤≤),(0(非负且有界性)(2)d (X , Y )=0当且仅当X =Y (自反性)(3)d (X , Y )= d (Y , X )(对称性)(4)),(),(),(Z Y d Y X d Z X d +≤(三角不等式)1.4 限失真编码定理申农第一定理和申农第二定理指明:无论是无噪声信道还是有噪声信道,只要信道的信息传输率R 小于信道容量C ,总能找到一种编码,在信道上以任意小的错误概率和任意接近信道容量的信息传输率传输信息。