ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:24.51KB ,
资源ID:4017010      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4017010.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(线性分组码.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

线性分组码.docx

1、线性分组码线性分组码一、原理:监督矩阵:线性分组码n, k 中许用码组为2k 个。定义线性分组码的加法为模二加法,乘法为二进制乘法。即 11 0、1 0 1、01 1、0 0 0;11 1、10 0、0 00 、11 0 。且码组与码组的运算在各个相应比特位上符合上述二进制加法运算规则。线性分组码具有如下性质 n, k 的性质:1.封闭性。任意两个码组的和还是许用的码组。2.码的最小距离等于非零码的最小码重。对于码组长度为 n 、信息码元为 k 位、监督码元为 r n k 位的分组码, 常记作 n, k码,如果满足 2r 1 n ,则有可能构造出纠正一位或一位以上错误的线性码。下面我们通过 (

2、 7,4)分组码的例子来说明如何具体构造这种线性码。 设分组码 n, k中, k 4 ,为能纠正一位误码,要求 r 3 。取 r 3 ,则 n k r 7 。该例子中,信息组为 a6a5 a4 a3 ,码字为 a6 a5 a 4 a3 a2 a1a0 。用 S1 , S2 , S3 的值与错码位置的对应关系可以规定为如表 1 所列。由表中规定可知,当已知信息组时,按以下规则得到三个校验元,即:S1 a6 a5 a4 a2S2 a6 a5 a3 a1 (式 1.1)S3 a6 a4 a3 a0S1S2 S3001010100011在发送端编码时,信息位表 1错码位置示意表。错码位置S1 S2 S

3、3错码位置a0101a4a1110a5a2111a6a3000无错a6 , a5 , a4 和 a3 的值决定于输入信号,因此它们是随机的。监督位 a2 ,a1 和 a0 应根据信息位的取值按监督关系来确定,即监督位应使上三式中S1 ,S2和 S3 的值为零(表示编成的码组中应无错码) 。由上式经移项运算,解出监督位:a2a6a5a4a1a6a5a3(式 1.2)a0a6a4a3给出信息位后,可直接按上式算出监督位,其结果见表 2。接收端收到每个码组后先按式 (1.1)计算出 S1 , S2 和 S3 ,再按表 1 判断错码情况。表 2 ( 7, 4)线性分组码(海明码)信息组码组信息组码组0

4、0000000000100010001110001000101110011001100001000101011010101001000110011110101110110010100010011011001100001010101011011101110111001100110011111011101000111011100011111111111给出( 7,4)线性分组码有24 即 16 个许用码字或合法码字,另有2724 个禁用码字。发送方发送的是许用码字,若接收方收到的是禁用码字,则说明传输中发生了错误。按上述方法构造的码称为海明码。表2 所列的 (7,4)海明码的最小码距d03 ,因此

5、,这种码能纠正一个错码或检测两个错码。海明码的编码效率等于k / n2r1 r / 2r1 r 1/ 2r1 1r / n(式 1.3)当 n 很大时,则编码效率接近 1。可见,海明码是一种高效码。现在再来讨论线性分组码的一般原理。上面已经提到, 线性码是指信息位和监督位满足一组线性方程的码,式 (1.1)就是这样一组线性方程的例子。现在将它改写成:1a61a51 a40a31 a20 a001a61a50 a41a30a20 a00(式 1.4)1a60 a51 a41a30a21 a00式( 1.4)可以表示成如下矩阵形式:a6a51110100a401101010a301011001a2

6、0a1a0(模 2) (式 1.5)上式还可以简记为:H AT OT或 A HT 0其中Aa6 a5 a4 a3 a2 a1a01110100H11010101011001O000右上标 “T表”示将矩阵转置。将 H 称为监督矩阵,编码时只要监督矩阵给定,编码时监督位和信息位的关系就完全确定。由式( 1.4)、式( 1.5)都可看出, H 的行数就是监督关系式的数目,它等于监督位的数目 r 。 H 的每行中的 “1的”位置表示相应码元之间存在的监督关系。式(1.5)中的 H 矩阵可以分为两部分:1110: 100H1101:010PI r1011: 001式中, P 为 r k 阶矩阵, I

7、r 为 r r 阶单位方阵,将具有PI r形式的 H 矩阵称为典型监督矩阵。由代数理论可知,H 矩阵的各行应该是线性无关的,否则将得不到r 个线性无关的监督关系式,从而也得不到r 个独立的监督位。若一行矩阵能写成典型的矩阵形式PI r ,则其各行一定是线性无关的。因为容易验证I r的各行是线性无关的,故PI r也是线性无关的。生成矩阵:类似于式( 1.4)改变成式(1.5)中矩阵形式那样,式( 1.5)也可以改写成:a21110a6a5a11101a4a01011a3或者111110a2a1 a0a6 a5a4a3 1 0 1a6a5a4 a3 Q011(式 1.6)(式 1.7)(式 :1.

8、8)(式 1.9)式中, Q 为一个 k r 阶矩阵,即它为P 的转置,即QPT式( 1.9)表明,信息位给定后,用信息位的行距乘矩阵Q 就产生出监督位。将 Q 的左边加上一 k k 阶单位方阵就构成一矩阵G ,即1000111G0100110I kQ01010100001011G称为生成矩阵,因为由它可以产生整个码组,即有a6 a5 a4 a3 a2 a1 a0 a6 a5 a4 a3 G或者(式 1.10)(式 1.11)(式 1.12)A a6 a5 a4 a3 G (式 1.13)因此,如果找到了码的生成矩阵 G ,则编码的方法就完全确定。具有 I k Q 形式的生成矩阵称为典型生成矩

9、阵。由典型生成矩阵得出的码组 A 中,信息位不变,监督位附加于其后,这种码称为系统码。与 H 矩阵相似,也要求 G 矩阵的各行是线性无关的。因为由式( 1.13)可以看出,任一码组 A 都是 G 的各行的线性组合。 G 共有 k 行,若它们线性无关, 则可组合出 2 k 种不同的码组 A ,它恰是有 k 为信息位的全部码组;若 G 的各行有线性相关的,则不可能由 G 生成 2k 种不同码组了。实际上, G 的各行本身就是一个码组。因此,如果已有 k 个线性无关的码组,则可以用其作为生成矩阵 G ,并由它生成其余的码组。码的距离两个码字之间, 对应位取之不同的个数, 称为汉明距离, 用 d 表示

10、。 一个码的最小距离d min 定义为 dmin min d( ci ,c j ), i j ,ci , cj ( n, k) ,两个码字之间的距离表示了它们之间差别的大小。 距离越大, 两个码字的差别越大, 则传送时从一个码字错成另一码字的可能性越小。码的最小距离愈大,其抗干扰能力愈强。线性分组码的纠检错能力对于任一个 ( n, k ) 线性分组码,( 1)若要在一个码字内检测出e 个错误,则要求码的最小距离d e 1;( 2)纠正 t 个错误,则要求码的最小距离d 2t1 ;( 3)纠正t个错误同时检测e(e t) 个错误,则要求d te 1。伴随式与译码一般说来,式(1.13)中 A 为

11、一 n 列的行矩阵。此矩阵的n 个元素就是码组中的n 个码元,所以发送的码组就是 A 。此码组在传输中可能由于干扰引入差错,故接收码组一般说来与A不一定相同。若设接收码组为一n 列的行矩阵 B ,即Bbn 1 bn 2b0(式 1.14)则发送码组和接收码组之差为:BAE(模 2)(式 1.15)它就是传输中产生的错码行矩阵,其中Een 1en 2e0(式 1.16)其中ei0当biai1当biai因此,若 ei0 ,表示该位接收码元无错; 若 ei1,则表示该位接收码元有错。式(1.15)也可以改写成:BAE(式 1.17)接收端译码时, 可将接收码组B 代入式( 1.6)中计算。若接收码组

12、中无错码,即 E0 ,则BAEA ,把它代入式(1.6)后,该式仍成立,则有BH T0(式 1.18)当接收码组有错时, E0 ,将 B 代入式( 1.15 )后,该式不一定成立。在错码较多,已超过这种编码的检错能力时,B 变为另一许用码组则式(1.18)仍能成立。这样的错码错码是不可检测的。 在未超过检错能力时, 上式不成立, 即其右端不等于零。 假设这时式( 1.18)的右端为 S ,即B H TS(式 1.19)将 B A E 代入式( 1.19)中可得S(AE)HTA H TE H T由式( 1.6)知, A H T0 ,所以S EH T(式 1.20)式中, S 称为伴随式或校正子。

13、它与式(1.1)中的 S 相似,有可能利用它来指示错码位置,这一点可以直接从式(1.20)中看出,式中S 只与 E 有关,而与A 无关,这就意味着 S 与错码 E 之间有确定的线性变换关系。若 S 和 E 之间一一对应,则 S 将能代表错码的位置。二、编解码流程:由 H 与 G 的分块表示的矩阵形式H P I n kG I k QP Q TQ PT则有G HT 0 或 H GT 0已知生成矩阵10001110100110G01010100001011根据以上几式可求出监督矩阵1110100H11010101011001最后可以根据输入的四位信息位和生成矩阵相乘得到编码矩阵。即C mG所有的编码

14、情况如表 1 所示。(式 2.1)(式 2.2)(式 2.3)(式 2.4)(式 2.5)(式 2.6)开 始把生成矩阵赋给一个二维数组 G提示输入要编码的信息码组的个数提示输入信息码组 M 提示输入错误并重新输入错误输入正确?正确将码组赋给二维数组,码组的个数作为行数,码组的位数作为数组的列数信息组的数组与生成矩阵数组相乘编码输出 c返回三、核心程序块:(7,4)码编译器整体程序:#include#includevoid main()/*G :生成矩阵 H :监督矩阵 HT :监督矩阵对应的转置矩阵 */*M :输入信息序列 C:编码输出序列 Input:输入接收码序列 B:译码输出序列 S

15、:伴随式 */int Q,N;/* 定义开始 */int i,j,s,r,k,t,p,u,m;int G47=1,0,0,0,1,1,1,0,1,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,1;int IR33=1,0,0,0,1,0,0,0,1;int H37, C107,M104,B207,Input100,HT73,P10,S1003;/*定义结束 */printf(n 您好!欢迎使用线性分组码编译器! n);printf(nn 本编译器针对( 7,4)码,所采用的生成矩阵 G=n);for(i=0;i4;i+)for(j=0;j7;j+)printf( %d

16、,Gij);printf(n);printf( 编译码过程都是针对二进制码组,除了系统要求选择功能,其他情况下禁止输入除0,1 以外的数。请在使用的过程中严格按照编译器要求的格式输入数据。 nn);printf( 现在请输入您所选择的编译器所对应的序号 ,按回车键继续 :n);printf(n1. 编码器 2.译码器 3.退出 n);printf(n 我选择: );scanf(%d,&Q);if(Q=0)Q+=4;while(Q)if(Q=1|Q=2|Q=3)break;elseprintf( 对不起,您输入有误,请重新输入 );scanf(%d,&Q);while(Q=1|Q=2|Q=3)i

17、f(Q=1)/* 编码程序 */printf(n 请输入您需要编码的信息组数 );scanf(%d,&N);printf(nn 请输入您需要编码的 %d 组四位二进制信息组 ,码组间用空格分开,按回车键确认。 n,N);/* 输入信息码 */printf(n 信息组 m=);for(i=0;iN;i+)scanf(%1d%1d%1d%1d,&Mi3,&Mi2,&Mi1,&Mi0);/* 求监督码 */for(i=0;iN;i+)Ci2=Mi3Mi2Mi1;Ci1=Mi3Mi2Mi0;Ci0=Mi3Mi1Mi0;for(j=0;j2;i-)/* 输出编码结果 */Cji=Mji-3;printf

18、(n 您所输入的信息组编码结果 c=);for(j=0;j=0;i-)printf(%d,Cji);printf(nn);printf(n 接下来您想: nn);/* 选择功能 */printf(1. 用编码器 2.用译码器 3.退出 nn);printf( 我想: );scanf(%d,&Q);else if(Q=2)/* 译码程序 */for(i=0;i3;i+)/* 求监督矩阵 */for(j=0;j4;j+)Hij=Gji+4;for(j=4;j7;j+)Hij=IRij-4;printf(n 监督矩阵 H=n);/* 输出监督矩阵 */for(i=0;i3;i+)for(j=0;j7

19、;j+)printf( %d,Hij);printf(n);t=1;while(t!=2)/* 输入接收码组 */p=1;printf(n 请输入总位数为 7 的倍数的接收码组 ,每位用空格隔开,每组位数为 7的倍数 ,以十进制 2 作为结束标志 ! 按回车键确认 n);while(p)for(i=0;i+)scanf(%d,&Inputi);if(Inputi=2)break;k=i%7;if(k=0)p=0;t=2;elsep=1;k=-k+7;printf( 您接收到的码组丢失了 %d 位 ,系统不能判断丢失位的具体位置,请重新输入 n,k);u=i/7;i=0;for(r=0;r=0;

20、j-,i+)Brj=Inputi;printf(n 将接收码组每七位分为一个码组,如下: n);for(i=0;iu;i+)for(j=0;j7;j+)printf( %1d,Bi6-j);printf(n);for(i=0;i3;i+)/* 求监督矩阵 H 的转置矩阵 */for(j=0;j7;j+)HTji=Hij;for(i=0;iu;i+)for(m=0;m3;m+)for(j=0;j7;j+)s+=(Bi6-j*HTjm);if (s%2=1)s=1;elses=0;Si2-m=s;s=0;printf(nn 伴随式 S=n);/* 输出伴随式 */for(j=0;j=0;i-)printf( %1d,Sji);printf(n);printf(n);for(i=0;i=0;j-)printf(%1d,Bij);printf( 请您再次确认! );printf( 译出的信息序列为: );for(j=6;j2;j-)printf(%d,Bij);break;case 2:Bi0=1Bi0;printf(nn 您接收的第 %d 个码组有错误,正确的码组应为: ,+i);i-;for(j=6;j=0;j-)printf(%1d,Bij);printf( 译出

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1