线性分组码信道编码.docx
- 文档编号:24656754
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:16
- 大小:258.74KB
线性分组码信道编码.docx
《线性分组码信道编码.docx》由会员分享,可在线阅读,更多相关《线性分组码信道编码.docx(16页珍藏版)》请在冰豆网上搜索。
线性分组码信道编码
数字通信课程报告
题目:
数字通信中的线性分组码
讲课老师:
学生姓名:
所属院系:
专业:
学号:
1设计目的和要求
数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生
图像跳跃,不连续,出现马赛克等现象。
通过信道编码可实现对数据流进行相应的处理,使系统具有一定的纠错能力和抗干扰能力,可极大地避免码流传送中误码的发生。
通过线性分
组码实现信道编码,提高系统的可靠性。
2设计原理
要设计一个(6,3)线性分组码的编译码程序,最基本的是要具备对输入的信息码进行编
码,让它具有抗干扰的能力。
同时,还要让它具有对接收到的整个码组中提取信息码组的功
能。
但是,在实际的通信系统中,由于信道传输特性不理想以及加性噪声的影响,接收到的
信息中不可避免地会发生错误,影响通信系统的传输可靠性,因而,本设计还要让该程序具
有纠正错误的能力,当接收到的码组中有一位码,发生错误时可以检测到这一位错码,并且
可以纠正这一位错码,并且让系统从纠正后的码组中提取正确的信息码组。
针对给定的矩阵
r“
011
101
Q=
110
完成如下的工作: 1完成对任意信息序列的编码2根据生成矩阵,形成监督矩阵; 3根据得到的监督矩阵,得到伴随式,并根据它进行译码; 4验证工作的正确性。 2.1线性分组码的编码 2.1.1生成矩阵 线性分组码(n,k)中许用码字(组)为2k个。 定义线性分组码的加法为模二加法,乘法 为二进制乘法。 即1+仁0、1+0=1、0+1=1、0+0=0;1x仁1、1X0=0、0X0=0、0x 仁o。 且码字■■■''■'■■■■'11与码字二m门丄…二;的运算在各个相应比特位上符合上述二进制加法运算规则。 线性分组码具有如下性质(n,k)的性质: 1、封闭性。 任意两个码组的和还是许用的码组。 2、码的最小距离等于非零码的最小码重。 对于码组长度为n、信息码元为k位、监督码元为r=n—k位的分组码,常记作(n,k)码,如果满足2r—1>n,则有可能构造出纠正一位或一位以上错误的线性码。 下面我们通过(7,3)分组码的例子来说明如何具体构造这种线性码。 设分组码(n,k) 中,k=3,为能纠正一位误码,要求r>3。 现取r=4,贝Un=k+r=7。 该例子中,信息组为(c6c5c4),码字为(c6c5c4c3c2c1c0).当已知信息组时,按以下规则得到四个校验元,即 C3=C6+c4 C1=c6+c5 C0=C5+c4 这组方程称为校验方程。 (7,3)线性分组码有23(8)个许用码字或合法码字,另有27-23个禁用码字。 发送 方发送的是许用码字,若接收方收到的是禁用码字,则说明传输中发生了错误。 为了深化对线性分组码的理论分析,可将其与线性空间联系起来。 由于每个码字都是一 个二进制的n重,及二进制n维线性空间Vn中的一个矢量,因此码字又称为码矢。 线性分 组码的一个重要参数是码率r=k/n,它说明在一个码字中信息位所占的比重,r越大,说明信 息位所占比重越大,码的传输信息的有效性越高。 由于(n,k)线性分组,线性分组码的2k个 码字组成了n维线性空间Vn的一个K维子空间。 因此这2k个码字完全可由k个线性无关的矢量所组成。 设此k个矢量为C1,C2,…,Ck,有生成矩阵形式为 C1 C2 G= Ck VJ (n,k)码字中的任一码字ci,均可由这组基底的线性组合生成,即 Ci=miG=[mn-1mn-2…mn-k]G 式中,mi=[mn-imn-2--mn-k]是k个信息元组成的信息组。 表2-1(7,3)线性分组码 信息组 码字 000 0000000 001 0011101 010 0100111 011 0111010 100 100110 101 1010011 110 1101001 111 1110100 对于表2-1给出的(7,3)线性分组码,可将写成矩阵形式一 1001110 [C6C5C4C3C2C1C0]=[C6C5C4]0100111 0 1110」 故(7,3)码的生成矩阵为 r 1 0 0 11 1 0 G= 0 1 0 01 1 1 <0 0 1 11 0 1 可以看到,从(7,3)码的8个码字中,挑选出k=3个线性无关的码字(1001110) (0100111),(00111101)作为码的一组基底,用c=mG计算得码字。 一个系统码的生成矩阵 G,其左边k行k列应是一个k阶单位方阵Ik,因此生成矩阵G 表示为 G=[IkP] 式中,P是一个kx(n-k)阶矩阵。 3设计过程 3.1编码过程 监督矩阵H与生成矩阵G的关系: 由H与G的分块表示的矩阵形式 H=[PIn-k] G=[IkQ] P=QT 则有GHT=0 或HGT=0 则可以根据G=[IkQ]求出生成矩阵 已知给出的(6,3)码的Q矩阵 0 1 1 Q= 1 0 1 1 1 0 H= 有了生成矩阵后则可以根据输入的四位信息位和生成矩阵相乘得到编码矩阵,即 MATLAB函数为: C=rem(l*G,2); 则编码的所有情况为: 编码序列: 信息位||监督位 a 0 0 0 0人 0 0 1 1 1 0 C= 0 1 0 1 0 1 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0丿 3.2译码过程 对于译码过程来说,同样由上知道监督矩阵: H= 有CHT=0。 若不属于许用码字,或有传输差错,且差错 位数在(n,k)码纠错能力内,则运算结果将为非0值,此时,可以纠错或检错重发 011 101 110 100 010 厂01P =110101 110 100 010 「001丿 T S7=BH=[100100] =111 厂011= 101 110 100 010 301> 当编码矩阵与生成矩阵的转置矩阵相乘时,若当其中的一位编码或两位出现差错时会有八种 情况,则这些情况列出错码矩阵如下: 错码矩阵: 校正子S 错误图样E 000 000000 001 000001 010 000010 011 000100 100 001000 101 010000 110 100000 111 100100 表3-1(6,3)线性分组码的译码表 而这些情况正好是和校验子有某种对应关系的,根据这些对应关系可以进行相关编程。 程检测到了那一位错误可以根据 若编 A=B+E其中A为纠错输出码序列,E为错码矩阵,R为信道输出码。 对接收到的信息进行改正求出正确的编码,从而再提去更正后的接收序列的前三位来提取信 息位,以至获得信息矩阵I。 4仿真程序及结果分析 4.1仿真结果1•输出编码结果及输入正确接收码的译码结果: 从程序的一开始运行就显示“您好! 欢迎使用线性分组码编译器: 请选择编译器种类: 1: 编译器2: 译码器: 0: 退出>>”的一串字样,当你输入“1”时,则又显示“请输入n*4的信息码组: ”。 当输入“2”时,显示“请输入接收码组B: ”。 当你输入“0”时,则退出程序。 运行结果如下图: 2.输入[0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;10 10;1011;1100;1101;1110;1111]一串信息码组后回车,便会得至U编码后的码组。 运行结果如下图: 01110],回车后显示如下: 图3程序的译码 4.当你输入“0”时,系统应该正常退出运行程序,运行结果如下: >aATLABX file已也》业1awIf世直Ux社・JLp □W ©cE1 COtwIIDirectory: dVMTI^BGpSWcirky| »粗giL 吃I叶7绢m旧译 谪l*序事用35即尖 L•毎诂<1 由图1可以看出编码的结果的八种情况和在推导过程中运算的结果是一致的,所以我们可 以知道程序的编码过程是正确的。 对于译码过程而言,当界面显示“请输入接收码组B: ” 然后从提示符后输入: [000000],由于输入的接收码组与编码后的码字一致,它提取了每个码组的前四位,即信息位,由结果看出译码过程是正确的,并没有出现错译的情况,可 见程序的译码片段是正确的。 2•输入一位错误时的结果分析 由图1可以看出,当界面显示“请输入接收码组B: ”。 然后从提示符后输入: [0000;00 01;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1 101;1110;1111]由图2有一位错误输入时的显示图所知,接收码组的第五位发生了错误,经程序纠检错误后改正了接收序列的错误,并且正确译出了信息位。 可见程序的纠错功 能也是可以实现的,以上结果进一步证实了,系统译码程序的正确性。 3•输入两位特定位错误时的结果分析 由图3有两位特定位错误输入时的显示图知,当输入B=[1101001;0101110]时,校正子是111,错误图样是100100,所以说明理论得以验证。 Matlab程序如下: functionbianyiqi %$$$$$■ %A纠错输岀码序列 %Definevariables: %H监督矩阵%G生成矩阵 %E错码矩阵 %S校验子矩阵 %C编码矩阵 %M校验子的行的十进制序列 %I输入信息序列 %R信道输岀码 Q=input(… '您好! 欢迎使用线性分组码编译器 : \n请选择编译器种类: \n1: 编码器2: 译码器0: 退岀>>'); while(Q) %信道编码程序 if(Q==1) clearall closeall H=[1110100; 1011010; 1101001]; G=gen2par(H); I=input('请输入n*4的信息码组: C=rem(l*G,2); disp('编码结果为: C='); disp(C); elseif(Q==2) %信道译码程序 clearall; closeall; H=[1110100; 1011010; 1101001]; B=input('请输入接收码组B: '); [a,b]=size(B); E=[0000000;0000001; 0000010;0000100; 0001000;0010000; 0100000;1000000]; S=rem(B*H',2); i=1; fori=1: 1: a M(i,1)=S(i,1).*4+S(i,2).*2+S(i,3); %监督矩阵 %求H阵的生成矩阵G '); %监督矩阵 %求校验子 %求校验子所表示的整数 endfori=1: 1: a switch(M(i,1)) case0 A(i,: )=B(i,: )+E(1,: ); case1 A(i,: )=B(i,: )+E(2,: ); case2 A(i,: )=B(i,: )+E(3,: ); case4 A(i,: )=B(i,: )+E(4,: ); case3 A(i,: )=B(i,: )+E(5,: ); case6 A(i,: )=B(i,: )+E(6,: ); case5 A(i,: )=B(i,: )+E(7,: ); case7 A(i,: )=B(i,: )+E(8,: ); otherwise '不可能出现’ end end A=rem(A,2);%求出正确的编码 disp('检纠错后的码组A='); disp(A); j=1; whilej<=4%提取信息位 I(: j)=A(: j); j=j+1; end disp('译出的信息序列I='); disp(I);%显示原信息码 else '对不起,您输入有误r end Q=input('接下来您想: \n1: 用编码器2: 用译码器0: 退出>>'); end disp('谢谢您的使用,再见! ! ! ');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性 分组码 信道编码