1、4验证工作的正确性。2.1 线性分组码的编码2.1.1 生成矩阵线性分组码( n, k)中许用码字(组)为 2k 个。定义线性分组码的加法为模二加法,乘法 为二进制乘法。即 1+1=0、1+0=1、0+1=1 、 0+0=0 ;11=1、10=0、01=0。且码字 与码字 的运算在各个相应比特位上符合 上述二进制加法运算规则。 线性分组码具有如下性质( n, k)的性质: 1、封闭性。任意两个码组的和还是许用的码组。 2、码的最小距离等于非零码的最小码重。 对于码组长度为 n、信息码元为 k 位、监督码元为 rnk 位的分组码,常记作( n,k)码, 如果满足 2r1n,则有可能构造出纠正一位
2、或一位以上错误的线性码。下面我们通过 ( 7,3)分组码的例子来说明如何具体构造这种线性码。 设分组码 (n,k)中,k = 3 ,为能纠正一位误码, 要求 r 。3现取 r4,则 nkr7。该例子中,信息组为 (c6c5c4), 码字为 (c6c5c4c3c2c1c0).当已知信息组时,按以下规则得到四个校验元,即c3=c6+c4 c2=c6+c5+c4c1=c6+c5c0=c5+c4这组方程称为校验方程。( 7, 3)线性分组码有 23( 8)个许用码字或合法码字,另有 27-23 个禁用码字。发送 方发送的是许用码字,若接收方收到的是禁用码字,则说明传输中发生了错误。为了深化对线性分组码
3、的理论分析, 可将其与线性空间联系起来。 由于每个码字都是一 个二进制的 n 重,及二进制 n 维线性空间 Vn 中的一个矢量,因此码字又称为码矢。线性分 组码的一个重要参数是码率 r=k/n, 它说明在一个码字中信息位所占的比重, r 越大,说明信 息位所占比重越大,码的传输信息的有效性越高。由于 (n,k) 线性分组,线性分组码的 2k 个 码字组成了 n维线性空间 Vn 的一个 K维子空间。因此这 2k 个码字完全可由 k个线性无关 的矢量所组成。设此 k个矢量为 c1,c 2, ,c k, 有生成矩阵形式为c2G=ck(n,k) 码字中的任一码字 ci, 均可由这组基底的线性组合生成,
4、即ci=mi G=mn-1 mn-2 mn-k G式中, mi =mn-1 mn-2 mn-k 是 k 个信息元组成的信息组。表 2-1 (7, 3)线性分组码信息组码字0000000000001001110101001001110110111010100100110101101001111011010011111110100对于表 2-1 给出的( 7,3)线性分组码,可将写成矩阵形式100111c6 c5 c4 c3 c2 c1 c0=c 6 c5 c40100111故( 7, 3)码的生成矩阵为100101000011可以看到,从( 7, 3)码的 8 个码字中,挑选出 k=3 个线性无
5、关的码字( 1001110) (0100111),(00111101)作为码的一组基底,用 c=mG 计算得码字。一个系统码的生成矩阵 G ,其左边 k 行 k 列应是一个 k 阶单位方阵 Ik,因此生成矩阵 G 表示为G=I k P式中, P 是一个 k (n-k) 阶矩阵。3设计过程3.1 编码过程监督矩阵 H 与生成矩阵 G的关系:由 H 与 G 的分块表示的矩阵形式H =P I n-k G=Ik QP=QT则有 G HT=0或 H GT=0Q=已知给出的( 6,3)码的 Q 矩阵1 0 11 1 0P=QT 和 H =P I n-k 可求出监督矩阵H为则可以根据 G=I k Q求出生成
6、矩阵由H=有了生成矩阵后则可以根据输入的四位信息位和生成矩阵相乘得到编码矩阵,即MATLAB函数为:C=rem(I*G,2);监督位其中 C 为编码后的结果, I 为信息矩阵, G为生成矩阵 则编码的所有情况为: 编码序列: 信息位 |C=3.2 译码过程对于译码过程来说,同样由上知道监督矩阵:0 1 1 1 0 0有 C HT=0 。若不属于许用码字,或有传输差错,且差错位数在 (n,k) 码纠错能力内,则运算结果将为非 0值,此时,可以纠错或检错重发S0 = B H T = 000000 =0001 0 00 1 00 0 1S1 = B H T =000001 =001S2 = B H
7、T =000010 =010S3 = B H T =000100 =011S4 = B HT =001000 =100S5 = BHT =010000 =101S6 = B HT =100000 =110 1 0 1TS7 = B H =100100 =111当编码矩阵与生成矩阵的转置矩阵相乘时, 若当其中的一位编码或两位出现差错时会有八种 情况,则这些情况列出错码矩阵如下:错码矩阵:校正子 S错误图样 E000000000001000010000100001000010000100000100100表 3-1(6, 3)线性分组码的译码表而这些情况正好是和校验子有某种对应关系的, 根据这些对
8、应关系可以进行相关编程。 程检测到了那一位错误可以根据若编A=B+E 其中 A 为纠错输出码序列, E 为错码矩阵, R 为信道输出码。 对接收到的信息进行改正求出正确的编码, 从而再提去更正后的接收序列的前三位来提取信 息位,以至获得信息矩阵 I 。4仿真程序及结果分析4.1 仿真结果1输出编码结果及输入正确接收码的译码结果: 从程序的一开始运行就显示“您好!欢迎使用线性分组码编译器:请选择编译器种类: 1: 编译器 2:译码器: 0:退出 ”的一串字样,当你输入“ 1”时,则又显示“请输入 n*4的信息码组: ”。当输入“ 2”时,显示“请输入接收码组 B:”。当你输入“ 0”时,则退出程
9、 序。运行结果如下图:图 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;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 ,回车后显示如下:4. 当你输入“ 0”时,系统应该正常退出运行程序
10、,运行结果如下:图4 系统正常输入退出4.2 结果分析1输出编码结果及输入正确接收码的译码结果分析由图 1 可以看出编码的结果的八种情况和在推导过程中运算的结果是一致的, 所以我们可以 知道程序的编码过程是正确的。对于译码过程而言,当界面显示“请输入接收码组 B :” , 0 0 0 0 0 0 ,由于输入的接收码组与编码后的码字一致, 它提取了每个码组的前四位,即信息位,由结果看出译码过程是正确的, 并没有出现错译的情况, 可见 程序的译码片段是正确的。2输入一位错误时的结果分析由图 1 可以看出, 当界面显示 “请输入接收码组 B:” 。 0 0 0 0;1 1 1 1 由图 2 有一位错误输入时的显示图所知,接收码组的第五位发生了错误,经程序 纠检错误后改正了接收序列的错误, 并且正确译出了信息位。 可见程序的纠错功能也是可以 实现的,以上结果进一步证实了,系
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1