1、 1 洗手 洗手 洗手 洗手 洗手 课程名称 : b ef 信息论与编码 洗手 课程设计题目 : b ef 循环码的编码和译码程序设计 洗手 洗手 指导教师 : b ef 洗手 系 别 : b ef 专 业 : b ef 洗手 学 号 : b ef 姓 名 : b ef 洗手 合 作 者 洗手 洗手 完成时间 : b ef 洗手 洗手 成绩 : b ef 评阅人 : b ef 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 一 、 bef实验目的 : bef洗手 1、 beef通过实验了解循环码的工作原理 。 洗手洗手 2、 beef深刻理解 RS 码构造 、 beefRS 编译码等相关概念和
2、算法 。 洗手 洗手 洗手 二 、 bef实验原理 洗手 1、 beefRS 循环码编译码原理与特点 洗手 设 C 使某 线性分组码的码字集合 , 吃饭 如果对任 CcccC nn ),( 021 , 吃饭 它的循环移位 ),( 1032)1( nnn ccccC 也属于 C, 吃饭 则称该 码为循环码 。 洗手 洗手 该码在结 构上有另 外的限 制 , 吃饭 即一个码字任意循环 移位的 结果仍 是一个 有效码字 。 洗手 其特点是 : b ee f( 1)可以用反馈移 位寄存 器很容 易实现 编码和 伴随式 的计算 ; b e ef( 2)由于循环码有很多固有 的代数结构 , 吃饭 从而可以
3、找到各种简单使用的译码办法 。 洗手 洗手 2 如果一个 线性码具有以下的属性 , 吃饭 则称为循环码 : b e ef 如果 n 元组 , 110 ncccc 是子空间 S 的一个码字 , 吃饭 则经过循环移位得到的 , 201)1( nn cccc 也同样是 S 中的一个码字 ; beef或者 , 吃饭 一般来说 , 吃饭 经过 j 次循环移位后得到的 , 11011)( jnnjnjnj ccccccc 也是S 中的一个码字 。 洗手 洗手 洗手 RS 码的编码系统是建 立在比特组基础上的 , 吃饭 即字节 , 吃饭 而不是单个的 0 和 1, 吃饭 因此它是非二进制 BCH码 , 吃饭
4、 这使得它处理突发错误的能力特别强 。 洗手洗手 码长 : beef 12 mn 洗手 信息段 : beef tnk 2 ( t 为纠错符号数) 洗手 监督段 : beef knt 2 洗手 最小码段 : beef 12 td 洗手 最小距离为 d 的本原 RS 码的生成多项式为 : beefg(x)=(x-)(x-2)(x-3)(x -d-2)洗手 信息元多项式为 : beef: befm(x)=m0+m1x+m2x2+mk -1xk-1 洗手 洗手 循环码特点有 : beef洗手 1) 循环码是线性分组码的一种 , 吃饭 所以它具有线性分组的码的一般特性 , 吃饭 且具有循环性 , 吃饭
5、纠错能力强 。洗手洗手 2) 循环码是一种无权码 , 吃饭 循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件 , 吃饭 即相邻数码间只有一位码元不同 , 吃饭 因此它具有一个很好的优点是它满足邻接条件 , 吃饭 没有瞬时错误(在数码变换过程中 , 吃饭 在速度上会有快有慢 , 吃饭 中间经过其 他一些数码形式 , 吃饭 即为瞬时错误) 。 洗手洗手 3) 码字的循环特性 , 吃饭 循环码中任一许用码经过牡环移位后 , 吃饭 所得到的码组仍然是许用码组 。 洗手洗手 洗手 对所有的 i=0,1,2,k -1, 吃饭 用生成多项式 g(x)除 nkix , 吃饭 有 : bef洗手 )()
6、()( xbxgxax iiikn ( 2 7) 洗手 式中 )(xbi 是余式 , 吃饭 表示为 : bef洗手 0,1,11,)( iiknknii bxbxbxb ( 2 8) 洗手 因此 , 吃饭 )(xbx ikn 是 g(x)的倍式 , 吃饭 即 )(1 xbx ikn 是码多项式 , 吃饭 由此得到系统形式的生成矩阵为 : beef洗手 洗手 (2 9)洗手 洗手 它是一个 k n 阶的矩阵 。 洗手洗手 同样 , 吃饭 由 G TH =0 可以得到系统形式的一致校验矩阵为 : beef洗手 洗手 洗手 ( 2 10) 洗手 0,01,01,00,1,21,20,11,11,10
7、000010001bbbbbbbbbGknxkkknkkkknk1000100010,00,20,11,01,21,11,01,21,1bbbbbbbbbHkkkkknknkknk3 洗手 洗手 洗手 已知( 7 , 吃饭 4)循环码的生成多项式和校验多项式分别为 : beef 1)( 3 xxxg , 吃饭1)( 24 xxxxh 。 洗手 写得其生成矩阵和校验矩阵分别为 : bef洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 2、 beef编码原理 : bef洗手 有信息码构成信息多项式 011)( mxmxm kk , 吃饭 其中最高幂次为 k-1; bef洗手 用 knx
8、 乘以信息多项式 m(x), 吃饭 得到的 )(xmx kn , 吃饭 最高幂次为 n-1, 吃饭 该过程相当于把信息码( 1km , 吃饭 2km ,吃饭 , 吃饭 1m , 吃饭 0m )移位到了码字德前 k 个信息位 ,吃饭 其后是 r 个全为零的监督位 ; beef洗手 用 g(x)除 )(xmx kn 得到余式 r(x),其次数必小于 g(x)的次数 , 吃饭 即小于( n-k) , 吃饭 将此 r(x)加于信息位后做监督位 , 吃饭 即将 r(x)于 )(xmx kn 相加 , 吃饭 得到的多项式必为一码多项式 。 洗手洗手 洗手 1)有信息码构成信息多项式 m(x)=mk-1xk
9、-1+m0 洗手 其中高幂次为 k-1。 洗手洗手 2)用 xn-k 乘上信息多项式 m(x), 吃饭 得最高幂次为 n-1, 吃饭 做移位 。 洗手洗手 3)用 g(x)除 xn-km(x)和到余式 r(x)。 洗手洗手 编码过程流程图 : beef洗手 1101000011010000110100001101G 1011100101100010111H4 洗手 洗手 洗手 3、 beef译码原理 : bef洗手 有接收到的 y(x)计算伴了随式 s(x)。 洗手洗手 根据伴随式 s(x)找出对应的估值错误图样 。 洗手洗手 计算 c(x)=y(x)+e(x), 吃饭 得估计码字 。 洗手
10、若 c(x)= c(x), 吃饭 则译码正确 , 吃饭 否则错误 。 洗手洗手 由于 g(x) 的次数为 n - k 次 , 吃饭 g(x) 除 E(x) 后得余式(即伴随式)的最高次数为 n-k-1 次 , 吃饭 故 S(x) 共有 2n-k 个可能的表达式 , 吃饭 每一个表达式对应一个错误格式 。 洗手 可以知道 (7,4)循环码的 S(x) 共有 2(7-4) = 8 个可能的表达式 , 吃饭 可根据错误图样表来纠正 (7,4)循环码中的一位错误 。 洗手洗手 洗手 解码过程流程图 : beef洗手 洗手 初始化 5 否 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手 洗手
11、 洗手 洗手 4、 beef纠错能力 : bef洗手 由于循环码是一种线性分组码 , 吃饭 所以其纠检错能力与线性分组码相当 。 洗手 而线性分组码的最小距离可用来衡量码的抗干扰能力 , 吃饭 那么一个码的最小距离就与它的纠检错能力有关 。 洗手 洗手 定理 : b eef 对于任一个 ),( kn 线性分组码 , 吃饭 若要在码字内 洗手 检测 个错误 , 吃饭 要求码的最小距离 1ed ; beef洗手 纠正 个错误 , 吃饭 要求码的最小距离 12 td ; beef洗手 纠正 个错误同时检测 个错误 , 吃饭 则要求 1 etd ; beef洗手 循环码的译码分检错译码与纠错译码两类
12、。 洗手 在无记忆信道上 , 吃饭 对码字 c, 吃饭 差错图案 e 和接收向量 r的多项式描述为 洗手 )()()( xexcxr 洗手 定义 )(xr 的伴随多项式为 )(xs 洗手 112210)( m o d)()(rr xsxsxssxgxrxs洗手 由于 ),( m o d0)()()( xgxgxaxc 所以 洗手 )() ( m o d()( xgxexs 洗手 由此可见 , 吃饭 0)( xs 则一定有差错产生 , 吃饭 或说满足 0)()(m o d( xgxe 的差错图样 )(xe 产生 , 吃饭 它满足 0)()(m o d( xgxe 。 洗手 洗手 循环码的检错译码
13、即是计算 )(xs 并判断是否为 0 洗手 洗手 三 、 bef实验分析 洗手 由 R(x)确定 S(x): 错误 !未找到引用源。 S(x)=0,无误码误码 由 S(x)确定错误图样 E(x) 纠错 )()()( XRXExc 存储 c(x) 6 1、 beef实验 测试结果 , 吃饭 包括译码结果 、 bef误码率与 信噪比之间的关系 、 bef生成多项式 洗手 洗 手 洗手 理想状态下 , 吃饭 对信号随机的提取 , 吃饭 编码器输入为 1000001110001000, 吃饭 洗手 通过 encode 函数 后 , 吃饭 因为加入了监督码 , 吃饭 信号变得复杂密集 , 吃饭 洗手 编
14、码输出为 1011000101001110110001011000 洗手 通过译码输出为 1000001110001000, 吃饭 与编码输入一致 。 洗手 说明循环码的检错和纠错能力性能好 。 洗手洗手 输出多项式为 : beefg(x)=(x+a) (x+a2) (x+a3)=a6+a5x+a4x+a3x2+ a3x +a2x+x3洗手 洗手 洗手 以 randint 函数重新做一个输入信号并进行编码 , 吃饭 结果与上例相似 , 吃饭 输入与输出一致 。 洗手洗手 洗手 7 由上面所有的图可以发现 , 吃饭 编码器输入信号并不完全相同 , 吃饭 因为对信号的提取是随机的 , 吃饭 所以码
15、元也是随机的 , 吃饭 信号经过编码器后 , 吃饭 因为要加入监督码 , 吃饭 所以波形变得更加密集了 。 洗手 信号经过译码后 , 吃饭波形和编码器输入信号大致相同 , 吃饭 说明循环码的检错和纠错能力可以 。 洗手洗手 洗手 洗手 洗手 信噪比与误码率的关系比较 , 吃饭 从图中可看出 , 吃饭 当信噪比在 20 以内时 , 吃饭 误码率相对比较大 , 吃饭 最高达到0.45 以上 , 吃饭 而当 SNR 大于后 , 吃饭 信噪比保持很稳定 。 洗手 下面是误码率的数字显示 : beef洗手 8 洗手 洗手 洗手 洗手 2、 beef实验过程遇到的问题及解决方法 洗手 刚开始并没有注意到运
16、用循环码时可用上简便的 Matlab 自带函数 , 吃饭 一直苦恼怎么进行纠错编码及解码 , 吃饭 然后查找资料 , 吃饭 收集了与循环码相关的函数(部分如下 : bef) 洗手 1) encode 函数 洗手 功能 : beef编码函数 洗手 语法 : beefcode=encode(msg,N,K,method,opt)洗手 说 明 : bef用 method 指定的方法完成纠错编码 。 洗手 其中 msg 代表信息码元 , 吃饭 是一个 K 列矩阵 , 吃饭 N 是编码后的码字长度 ; beefK 是信息位的长度 ; beefopt 是有些编码方式需要的参数 。 洗手洗手 洗手 2) d
17、ecode 函数 洗手 功能 : beef译码函数 洗手 语法 : beefmsg=decode( code, 吃饭 N, 吃饭 K, 吃饭 method, 吃饭 opt1,opt2,opt3,opt4) ;bef 洗手 说明 : bef这个函数对接收到的码字进行译码 , 吃饭 恢复出原始的信息 , 吃饭 译码参数和方式必须和编 码时采用的严格相同 。 洗手 它对接收到的码字 , 吃饭 按 method 指定的方式进行译码 ; befopt1, 吃饭 , 吃饭 opt4 是可选项的参数 。 洗手洗手 洗手 3) cyclpoly 函数 洗手 功能 : beef生成循环码的生成多项式 。 洗手洗
18、手 语法 : beefp=cyclpoly( N,K) ;beef洗手 p=cyclpoly( N,K,fd_flag) ;beef洗手 说明 : bef从 p=cyclpoly( N,K)中可找到一个给定码长 N 和信息位长度 K 生成多项式 p, 吃饭 注意不是任意9 给定一个多项式都可以作为生 成多项式 。 洗手洗手 洗手 4) randint 函数 洗手 功能 : beef引起一致地分布的任意整数矩阵 洗手 语法 : beefout = randint(m)洗手 out = randint(m,n)洗手 out = randint(m,n,rg)洗手 out = randint(m,n
19、,rg,state)洗手 洗手 在进行误码率与信噪比之间的关系编程后 , 吃饭 Matlab 一直显示 洗手 洗手 其后才发现原来没有对加噪后的信号进行整形输出 , 吃饭 于是加入 for 循环以四舍五入对信号进行整形设定 。 洗手洗手 for i=1:100 for a=1:k+1 if noisycode(i,a)0.5 noisycode(i,a) = 0;beef else noisycode(i,a) = 1;beef end end end 洗手 洗手 四 、 befRS 码在现代通信系统中的应用 洗手 洗手 RS 编码起源于 1960 年 MIT Lincoln 实验室 , 吃饭
20、 经历了数十年的发展 , 吃饭 RS 码成为了研究最详尽 , 吃饭 分析最透彻 , 吃饭 应用最广泛 , 吃饭 研究成果最多的 码类之一 。 洗手洗手 洗手 、 bef在井下通信中的应用 : bef由于井下空间小 , 吃饭 供电系统布置受到很大局限 , 吃饭 电磁干扰现象也很严重 ,吃饭 通过选择合适的信道编码方式是抗干扰措施之一 , 吃饭 可有效消除干扰 , 吃饭 而由于 RSce 纠正 t 个 m 位的二进制错误会符号 , 吃饭 而不管这 t个错误会符号是连续出现的还是离散出现 , 吃饭 因此 RS 很适用于存在突发错误信道中 , 吃饭 如井下工作 , 吃饭 对系统码率的降低和可靠性的提高
21、起重要作用 。 洗手洗手 10 洗手 井下采煤机与通信系统的硬件框图 洗手 洗手 洗手 、 beefRS 码在 PDS 水声通信 技术的应用 洗手 水声通信技术信道是随机时变空变的 , 吃饭 其多途扩展产生的码间干扰直接影响到了水声通信的质量 。 洗手而 RS 是一种扩展的非二进制 BCH 码 , 吃饭 具有与 PDS 通信相结合的优势 。 洗手洗手 洗手 、 beefRS 码在无线高保真音频传输系统中的应用 洗手 在无线音频传输中 , 如果传输的数据出现误码 , 则会在播放时出现噪声或者啸叫声 , 所以想要确保得到高保真的音频 , 控制无线传输的误码率是必须的 , 通常采用重传和纠错编码两种
22、方法 。 洗手 重传机制对无线信道的带宽要求更高 , 这里采用 RS 纠错编码的方法来控制误码率 。 洗手洗手 洗手 五 、 bef实验程序 洗手 1、 beef循环码编码与解码 Matlab 源程序(实验以( 7, 吃饭 4)循环码进行分析) 洗手 m = 3;beef 洗手 n = 2m-1;beef %定义码长 洗手 k = n-m;beef %信息位长 洗手 msg = randint(k*4,1,2);beef %随机提取信号 , 吃饭 引起一致地分布的任意整数矩阵 洗手 subplot(2,2,1)洗手 stem(msg)洗手 title(编码器输入信号 )洗手 p=cyclpoly(n,k) %循环码生成多项式 , 吃饭 n=7, 吃饭 k=4 洗手 code = encode(msg,n,k,cyclic,p);bef %编码函数 , 吃饭 对信号进行差错编码 洗手 subplot(2,2,2)洗手 stem(code)洗手 title(编码器输出信号 )洗手 recode=decode(code,n,k,cyclic,p) %对信号进行译码 , 吃饭 对接收到的码字进行译码 , 吃饭 恢复出原始的信息 , 吃饭 译码参数和方式必须和编码时采用的严格相同 洗手 subplot(2,2,3)洗手