线性分组码信道编码_第1页
线性分组码信道编码_第2页
线性分组码信道编码_第3页
线性分组码信道编码_第4页
线性分组码信道编码_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字通信课程报告题 目: 数字通信中的线性分组码讲课老师: 学生姓名: 所属院系: 专 业: 学 号: 1设计目的和要求数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图像跳跃,不连续,出现马赛克等现象。通过信道编码可实现对数据流进行相应的处理,使系统具有一定的纠错能力和抗干扰能力,可极大地避免码流传送中误码的发生。通过线性分组码实现信道编码,提高系统的可靠性。2 设计原理要设计一个(6,3)线性分组码的编译码程序,最基本的是要具备对输入的信息码进行编码,让它具有抗干扰的能力。同时,还要让它具有对接收到的整个码组中提取信息码组的功能。但是,在实际的通信系统中,由

2、于信道传输特性不理想以及加性噪声的影响,接收到的信息中不可避免地会发生错误,影响通信系统的传输可靠性,因而,本设计还要让该程序具有纠正错误的能力,当接收到的码组中有一位码,发生错误时可以检测到这一位错码,并且可以纠正这一位错码,并且让系统从纠正后的码组中提取正确的信息码组。针对给定的矩阵0 1 11 0 11 1 0Q=完成如下的工作:1 完成对任意信息序列的编码2 根据生成矩阵,形成监督矩阵;3 根据得到的监督矩阵,得到伴随式,并根据它进行译码;4 验证工作的正确性。2.1 线性分组码的编码2.1.1 生成矩阵线性分组码(n,k)中许用码字(组)为2k个。定义线性分组码的加法为模二加法,乘法

3、为二进制乘法。即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位、监督码元为rnk位的分组码,常记作(n,k)码,如果满足2r1n,则有可能构造出纠正一位或一位以上错误的线性码。下面我们通过(7,3)分组码的例子来说明如何具体构造这种线性码。设分组码(n,k)中,k = 3,为能纠正一位误码,

4、要求r3。现取r4,则nkr7。该例子中,信息组为(c6c5c4),码字为(c6c5c4c3c2c1c0).当已知信息组时,按以下规则得到四个校验元,即 c3=c6+c4c2=c6+c5+c4 c1=c6+c5c0=c5+c4 这组方程称为校验方程。 (7,3)线性分组码有23(8)个许用码字或合法码字,另有27-23个禁用码字。发送方发送的是许用码字,若接收方收到的是禁用码字,则说明传输中发生了错误。 为了深化对线性分组码的理论分析,可将其与线性空间联系起来。由于每个码字都是一个二进制的n重,及二进制n维线性空间Vn中的一个矢量,因此码字又称为码矢。线性分组码的一个重要参数是码率r=k/n,

5、它说明在一个码字中信息位所占的比重,r越大,说明信息位所占比重越大,码的传输信息的有效性越高。由于(n,k)线性分组,线性分组码的2k个码字组成了n维线性空间Vn的一个K维子空间。因此这2k个码字完全可由k个线性无关的矢量所组成。 设此k个矢量为c1,c2,ck,有生成矩阵形式为c1c2···ck G=(n,k)码字中的任一码字ci,均可由这组基底的线性组合生成,即 ci=mi ·G=mn-1 mn-2 mn-k·G 式中,mi =mn-1 mn-2 mn-k 是k个信息元组成的信息组。表2-1 (7,3)线性分组码信息组码

6、字0000000000001001110101001001110110111010100100110101101001111011010011111110100对于表2-1给出的(7,3)线性分组码,可将写成矩阵形式c6 c5 c4 c3 c2 c1 c0=c6 c5 c4·故(7,3)码的生成矩阵为 G= 可以看到,从(7,3)码的8个码字中,挑选出k=3个线性无关的码字(1001110)(0100111),(00111101)作为码的一组基底,用c=m·G计算得码字。一个系统码的生成矩阵G,其左边k行k列应是一个k阶单位方阵Ik,因此生成矩阵G表示为 G=Ik P 式中

7、,P是一个k×(n-k)阶矩阵。3 设计过程3.1 编码过程监督矩阵H与生成矩阵G的关系:由H与G的分块表示的矩阵形式H =P In-k G=Ik Q P=QT  则有G·HT=0    或   H·GT=0 已知给出的(6,3)码的Q矩阵 0 1 11 0 11 1 0 Q= 则可以根据G=Ik Q求出生成矩阵 1 0 0 0 1 10 1 0 1 0 10 0 1 1 1 0 G= 由 P=QT 和 H =P In-k 可求出监督矩阵H为0 1 1 1 0 01 0 1 0 1 0

8、1 1 0 0 0 1 H= 有了生成矩阵后则可以根据输入的四位信息位和生成矩阵相乘得到编码矩阵,即MATLAB函数为: C=rem(I*G,2); 其中C为编码后的结果,I为信息矩阵,G为生成矩阵。则编码的所有情况为:编码序列:信息位 | 监督位 0 0 0 0 0 00 0 1 1 1 00 1 0 1 0 10 1 1 0 1 11 0 0 0 1 11 0 1 1 0 11 1 0 1 1 01 1 1 0 0 0 C=3.2 译码过程0 1 1 1 0 01 0 1 0 1 01 1 0 0 0 1对于译码过程来说,同样由上知道监督矩阵: H= H矩阵与(n,k)码的任何一个许用码字

9、进行相乘的结果必等于0,即若C=m·G是任一(n,k)码字,则必有C·HT=0。若不属于许用码字,或有传输差错,且差错位数在(n,k)码纠错能力内,则运算结果将为非0值,此时,可以纠错或检错重发。0 1 11 0 11 1 01 0 00 1 00 0 1S0 = B ·H= 000000· =000 0 1 11 0 11 1 01 0 00 1 00 0 1S1 = B ·H=000001 ·=001 0 1 11 0 11 1 01 0 00 1 00 0 1 S2 = B ·H=000010· =010 0

10、 1 11 0 11 1 01 0 00 1 00 0 1S3 = B ·H=000100· =011 0 1 11 0 11 1 01 0 00 1 00 0 1S4 = B ·H=001000· =100 0 1 11 0 11 1 01 0 00 1 00 0 1S5 = B ·H=010000· =101 0 1 11 0 11 1 01 0 00 1 00 0 1S6 = B ·H=100000· =110 0 1 11 0 11 1 01 0 00 1 00 0 1S7 = B ·H=1001

11、00· =111 当编码矩阵与生成矩阵的转置矩阵相乘时,若当其中的一位编码或两位出现差错时会有八种情况,则这些情况列出错码矩阵如下:错码矩阵:表3-1(6,3)线性分组码的译码表校正子S错误图样E000000000001000001010000010011000100100001000101010000110100000111100100而这些情况正好是和校验子有某种对应关系的,根据这些对应关系可以进行相关编程。若编程检测到了那一位错误可以根据 A=B+E其中A 为纠错输出码序列,E为错码矩阵,R为信道输出码。对接收到的信息进行改正求出正确的编码,从而再提去更正后的接收序列的前三位来

12、提取信息位,以至获得信息矩阵I。4 仿真程序及结果分析4.1 仿真结果1输出编码结果及输入正确接收码的译码结果:从程序的一开始运行就显示“您好!欢迎使用线性分组码编译器:请选择编译器种类:1:编译器 2:译码器:0:退出>> ”的一串字样,当你输入“1”时,则又显示“请输入n*4的信息码组:”。当输入“2”时,显示“请输入接收码组B:”。当你输入“0”时,则退出程序。运行结果如下图: 图1 输出编码结果和正确输入时显示图2输入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

13、;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1一串信息码组后回车,便会得到编码后的码组。运行结果如下图: 图2 程序的编码过程3当输入“2”时,显示“请输入接收码组B:”。然后从提示符后输入:1 1 0 1 0 0 1;0 1 0 1 1 1 0,回车后显示如下:图3 程序的译码4. 当你输入“0”时,系统应该正常退出运行程序,运行结果如下:图4 系统正常输入退出4.2 结果分析1输出编码结果及输入正确接收码的译码结果分析由图1可以看出编码的结果的八种情况和在推导过程中运算的结果是一致的,所以我们可以知道程序的编码过程是正确的。对于译码过程而言

14、,当界面显示“请输入接收码组B:” ,然后从提示符后输入:0 0 0 0 0 0,由于输入的接收码组与编码后的码字一致,它提取了每个码组的前四位,即信息位,由结果看出译码过程是正确的,并没有出现错译的情况,可见程序的译码片段是正确的。2输入一位错误时的结果分析由图1可以看出,当界面显示“请输入接收码组B:” 。然后从提示符后输入: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由图2 有一位

15、错误输入时的显示图所知,接收码组的第五位发生了错误,经程序纠检错误后改正了接收序列的错误,并且正确译出了信息位。可见程序的纠错功能也是可以实现的,以上结果进一步证实了,系统译码程序的正确性。3输入两位特定位错误时的结果分析由图3 有两位特定位错误输入时的显示图知,当输入B=1 1 0 1 0 0 1;0 1 0 1 1 1 0时,校正子是111,错误图样是100100,所以说明理论得以验证。 Matlab 程序如下:function bianyiqi % -$- % Define variables: % H 监督矩阵 % G 生成矩阵 % C 编码矩阵 % I 输入信息序列 % R 信道输出

16、码 % A 纠错输出码序列 % E 错码矩阵 % S 校验子矩阵 % M 校验子的行的十进制序列 % =Q=input(. '您好!欢迎使用线性分组码编译器:n 请选择编译器种类:n 1:编码器 2:译码器 0:退出>>'); while(Q) %信道编码程序 if(Q=1) clear all close all H=1 1 1 0 1 0 0; 1 0 1 1 0 1 0; 1 1 0 1 0 0 1; %监督矩阵 G=gen2par(H); %求H阵的生成矩阵G I=input('请输入n*4的信息码组:'); C=rem(I*G,2); di

17、sp('编码结果为:C='); disp(C); elseif(Q=2) %信道译码程序 clear all; close all; H=1 1 1 0 1 0 0; 1 0 1 1 0 1 0; 1 1 0 1 0 0 1; %监督矩阵 B=input('请输入接收码组B:'); a,b=size(B); E=0 0 0 0 0 0 0;0 0 0 0 0 0 1; 0 0 0 0 0 1 0;0 0 0 0 1 0 0; 0 0 0 1 0 0 0;0 0 1 0 0 0 0; 0 1 0 0 0 0 0;1 0 0 0 0 0 0; S=rem(B*H&#

18、39;,2); %求校验子 i=1; for i=1:1:a M(i,1)=S(i,1).*4+S(i,2).*2+S(i,3); %求校验子所表示的整数 end for i=1:1:a switch(M(i,1) case 0 A(i,:)=B(i,:)+E(1,:); case 1 A(i,:)=B(i,:)+E(2,:); case 2 A(i,:)=B(i,:)+E(3,:); case 4 A(i,:)=B(i,:)+E(4,:); case 3 A(i,:)=B(i,:)+E(5,:); case 6 A(i,:)=B(i,:)+E(6,:); case 5 A(i,:)=B(i,:)+E(7,:); case 7 A(i,:)=B(i,:)+E(8,:); otherwise '不可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论