- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本原多项式
4.2.1 函数介绍
decode 功能:差错控制译码。 语法: msg = decode(code,n,k,'hamming/fmt',prim_poly) msg = decode(code,n,k,'linear/fmt',genmat,trt) msg = decode(code,n,k,'cyclic/fmt',genpoly,trt) msg = decode(code,n,k) [msg,err] = decode(...) syndtable [msg,err,ccode] = decode(...)
4.4.1 线性分组码原理
反映线性分组码纠错能力的重要参数是最小(汉明) 码距,即任何两个不同码字间的最小汉明距离。在 线性码中,最小距离等于该码的最小码重。
4.3.1 线性分组码解码原理
从长为N的码字中恢复出长为K的信元需要经过一 个矩阵运算--伴随式计算。 假定接收到的信号是码字v和信道中产生的错误序 列e的叠加,即r=v+e,则译码过程包括下面四个 步骤:
h= 1 0 0
0 1 0
0 0 1
1 1 0
0 1 1
1 1 1
1 0 1
Hamming码
[h,g,n,k] = hammgen(3) h=1001011 0101110 0010111 g=1101000 0110100 1110010 1010001 n=7 k=4
,校正子与真值表的关系
校正子S s2 s1 s0
错误码位
真值表E e6 e5 e2 e3 e2 e1 e0
0 1 2 3 4 5 6 7
无 b4 b5 b2 b6 b0 b3 b1
0000000 0010000 0100000 0000100 1000000 0000001 0001000 0000010
1 1]]
4.3.3 线性分组码的MATLAB仿真作业
1 0 G 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
作业:假设生成矩阵为
(7 , 4) 线 性 分 组 码 。 用 MATLAB 函 数 encode 和 decode实现编/译码过程,要求:信息码用随机数;
加入一定的噪声后进行解码 ;并且计算错误比特 数
4.3.3 线性分组码的仿真模块
线性分组码编码参数
线性分组码解码参数
序号
错误码位
真值表E e6 e5 e2 e3 e2 e1 e0
校正子S s2 s1 s0
0 1 2 3 4 5 6 7
无 b4 b5 b2 b6 b0 b3 b1
0000000 0010000 0100000 0000100 1000000 0000001 0001000 0000010
rem与mod函数比较
rem(3,-2)
ans =1
rem(-3,2)
ans =-1
ans =-1 ans =1
与X符号同
mod(3,-2) mod(-3,2)
与Y符号同
4.2.2 通信工具箱差错控制函数举例
对二进制信息流进行hamming编码,信元长度 为4,码字长度为7: N=7; K=4; row_num=100; msg=randint(K*row_num,1,2); code=encode(msg,N,K,’hamming'); nois=randerr(row_num,N,1); code=rem(code(:)+nois(:),2); rcv=decode(code,N,K,' hamming'); err=biterr(rcv,msg);
4.1.1 差错控制编码过程
通信系统接收端
1.从信道接受信号并进行解调,恢复序列 2.按某种方式计算信息序列有无差错 3.检错/纠错
4.1.2 差错控制编码分类
分组码 线性编码 卷积码 非线性编码
汉明码 循环码
各码元仅与本组的信息元有关
各码元不仅与本组的信息元有关,还 与前面的若干组信息元有关
4.3.2 线性分组码的MATLAB仿真举例
例1 (7,4)线性分组码生成矩阵如下(通信原理 书中):
G=[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];
求线性分组码编码后的码组
4.3.2线性分组码的MATLAB仿真举例
程序: g=[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]; r=[0 0 1 0]'; code=encode(r,7,4,'linear',g) code = 0 0 1 0 g=[eye(4),[1 1 1;1 1 0;1 0 1;0 1 0 1
举例
r=[1 1 1 0 ]'; code=encode(r,7,4,'hamming') code1=decode(code,7,4)
0 1 0 1 1 1 0
4.2.2 通信工具箱差错控制函数举例
对二进制信息流进行 hamming编码,信元长度为 4,码 字长度为7: N=7; K=4; row_num=100; msg=randint(K*row_num,1,2); code=encode(msg,N,K,’hamming'); nois=randerr(row_num,N,1); code=rem(code(:)+nois(:),2); rcv=decode(code,N,K,' hamming'); err=biterr(rcv,msg);
4.3 线性分组码
4.4.1 线性分组码原理
线性分组编/译码是一种常用的编/译码方法。其它一些编/ 译码方法,例如汉明码或 BCH 码,都是线性分组码的特 例。在线性分组码中,码字矢量是消息矢量的映射。 码字v和信元u有如下关系: v=uG G是生成矩阵(K行N列)
4.3 线性分组码
000 001 010 011 100 101 110 111
4.3.1 线性分组码解码原理
通信工具箱为对称线性分组码提供了一个函数gen2par, 该函数可以由生成矩阵G计算出校验矩阵H的值。利用 伴随式的值,通过一个逻辑电路真值表就可以确定错误 的位置。
在通信工具箱中,单独的错误可以通过指令htruthtb的 运算发现(相当于求出校正子与真直表的对应关系)。 一旦求出e,v就可以通过有限域GF(2)上的简单加法运 算得到。
4.3.1 线性分组码解码原理
gen2par 功能:生成矩阵和校验阵的转换函数。 语法:h=gen2par(g); g=gen2par(h); 说明:h=gen2par(g)可以由一个生成矩阵 g得到 校验阵h,反之亦可。
g=[1 1 0 1 0 0 0;0 1 1 0 1 0 0;1 1 1 0 0 1 0;1 0 1 0 0 0 1]; h=gen2par(g)
out = randerr(8,7,[0 2]) out = 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0
out2 = randerr(8,7,[0 2; .25 .75]) out2 = 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0
计算r的伴随式的值;s=rHT
利用伴随式的值确定错误的位置; 将接收到的矢量还原为码字矢量
v=r-e; 从处理过的码字中恢复出原始的信息码元 。
4.4.2 线性分组码解码原理
当生成矩阵
序号
G
1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1
第四章 差错控制编/译码
4.1 差错控制编码概述
在通信系统中,发送端发出的信号受到噪声的影响,
信号的传输波形若受到破坏,则会使得接收端可能 发生错误判决。
信道编码是现代通信系统广泛采用的一种差错控制 措施。
4.1.1 差错控制编码过程
通信系统发送端
1.按某种方式对信息计算,得到检错/纠错 码 2.把此检错/纠错编码附加到信息序列中 3.把上一步得到的信息序列经过载波调制之 后发送到信道中
rem函数
求余函数
rem(x,y) has the same sign as x while mod(x,y) has the same sign as y.
rem(x,y) and mod(x,y) are equal if x and y have the same sign, but differ by y if x and y have different signs.
线性分组码
结构为(N,K)
其中K为信息位的长度 N-K为监督位的长度 信息位和监督位有一些线性方程联系着,并且各个 码之间是相互独立的
4.2 差错控制编/译码函数
encode 功能:差错控制编码
语法: