您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于MATLAB的循环码实验报告
基于Matlab循环码编码方法的应用叶俊(指导老师,刘丹平副教授)(重庆大学通信工程学院中国重庆400000)摘要:任何两个相邻的循环码只有一位数字不同,因此循环码具有可靠性高的优点,在现代通信系统中应用广泛。本文主要介绍了循环码的编码和译码的基本编码原理,纠错能力及其在Matlab中的实现及应用。关键词:循环码编码MatlabTheApplicationofCyclicCodingMethodonMatlabYeJun(Tutor:LiuDanping)(CollegeofCommunicationEngineering,ChongqingUniversityChinaChingqing400000)Abstract:Anytwoadjacentcycliccodeonlyonenumberisdifferent,sothecycliccodehastheadvantagesofhighreliability,whichiswidelyusedinmoderncommunicationsystem.Thisarticlemainlyintroducedthebasiccodingprincipleofcycliccodecodinganddecoding,errorcorrectionabilityanditsimplementationandapplicationinMatlab.Keywords:cycliccodecodingMatlab1.循环码原理及其基本特点1.1循环码基本概念及其特点设C使某线性分组码的码字集合,如果对任CcccCnn),,,(021,它的循环移位),,,(1032)1(nnnccccC也属于C,则称该码为循环码。该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。3)码字的循环特性,循环码中任一许用码经过循环移位后,所得到的码组仍然是许用码组。4)可以用反馈移位寄存器很容易实现编码和伴随式的计算。2.1循环码编码原理在一个GF(2)域上的(n,k)循环码中,一定存在唯一的一个次数最低的(n-k)次首一码多项式g(x)=xn-k+gn-k-1xn-k-1+…+g1x+1,使所有码多项式都是g(x)的倍式,且所有小于n次的g(x)的倍式都是码多项式。(n,k)循环码的生成多项式g(x)一定是(xn-1)的因式,即一定存在一个多项式h(x),满足(xn-1)=g(x)h(x)或g(x)|(xn-1)反之,如果g(x)是(xn-1)的(n-k)次因式,g(x)一定是某(n,k)循环码的生成多项式。即C(x)=m(x)g(x)否及g(x)|C(x)上述定理告诉了构造(n,k)循环码的方法如下:①对xn-1(在二元域中等效于对xn+1)实行因式分解,找出其中的(n-k)次因式。②以找出的(n-k)次因式为循环码生成多项式g(x),与信息多项式m(x)相乘,即得码多项式:C(x)=m(x)g(x)。3.1编码过程流程图:2.译码原理及其实现:译码原理及其步骤1)有接收到的y(x)计算伴了随式s(x)。2)根据伴随式s(x)找出对应的估值错误图样。3)计算c^(x)=y(x)+e^(x),得估计码字。若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)循环码中的一位错误。解码过程流程图:纠错能力及其接收向量:由于循环码是一种线性分组码,所以其纠检错能力与线性分组码相当。而线性分组码的最小距离可用来衡量码的抗干扰能力,那么一个码的最小距离就与它的纠检错能力有关。定理:对于任一个(n,k)线性分组码,若要在码字内(1)检测个错误,要求码的最小距离1ed;(2)纠正个错误,要求码的最小距离12td;(3)纠正个错误同时检测个错误,则初始化由R(x)确定S(x):错误!未找到引用源。S(x)=0,无误码误码由S(x)确定错误图样E(x)纠错)()()(XRXExc存储c(x)要求1etd;循环码的译码分检错译码与纠错译码两类。在无记忆信道上,对码字c,差错图案e和接收向量r的多项式描述为)()()(xexcxr定义)(xr的伴随多项式为)(xs112210))((mod)()(rrxsxsxssxgxrxs由于)),((mod0)()()(xgxgxaxc所以))()(mod()(xgxexs由此可见,0)(xs则一定有差错产生,或说满足0))()(mod(xgxe的差错图样)(xe产生,它满足0))()(mod(xgxe。循环码的检错译码即是计算)(xs并判断是否为03.实验分析实验测试结果理想状态下,对信号随机的提取,编码器输入为1000001110001000,通过encode函数后,因为加入了监督码,信号变得复杂密集,编码输出为1011000101001110110001011000通过译码输出为1000001110001000,与编码输入一致。说明循环码的检错和纠错能力性能好。输出多项式为:g(x)=(x+a)(x+a2)(x+a3)=a6+a5x+a4x+a3x2+a3x+a2x+x3以randint函数重新做一个输入信号并进行编码,结果与上例相似,输入与输出一致。由上面所有的图可以发现,编码器输入信号并不完全相同,因为对信号的提取是随机的,所以码元也是随机的,信号经过编码器后,因为要加入监督码,所以波形变得更加密集了。信号经过译码后,波形和编码器输入信号大致相同,说明循环码的检错和纠错能力可以。4.实验程序1、循环码编码与解码Matlab源程序(实验以(7,4)循环码进行分析)m=3;n=2^m-1;k=n-m;msg=randint(k*4,1,2);subplot(2,2,1)stem(msg)title('编码器输入信号')p=cyclpoly(n,k)code=encode(msg,n,k,'cyclic',p);subplot(2,2,2)stem(code)recode=decode(code,n,k,'cyclic',p)subplot(2,2,3)stem(recode)title('译码器输出信号')t=-1:0.01:1;x=recode;N=length(x);fx=fft(x);df=100/N;n=0:N/2;f=n*df;subplot(2,2,4);plot(f,abs(fx(n+1))*2/N);grid;title('频谱图')5.总结我们小组在分配到循环码这个专题报告后,我们在组长的组织下大家先是自己了解相关内容,然后再聚集在一起进行讨论和对专题进行分析,确定任务后根据大家的兴趣以及现所掌握的知识进行任务的分配,我所承担的任务就是弄清楚循环码的译码和编码原理及其相关方法,最后做好PPT发给组长进行综合整理。刘老师这种独特的教学方式把被动的课堂浇灌知识改变为让我们主动的去搜索知识,这点很重要,可以很好地培养我们的自学能力,而且还可以培养我们的合作协调意识,在这次专题报告中,我也确实学习了很多,而且印象深刻,因为是自己主动学习的。开始并没有注意到运用循环码时可用简便的Matlab功能函数,不知道怎么进行纠错编码及解码,然后查找资料,收集了与循环码相关的函数(部分如下:)1)encode函数功能:编码函数说明:用method指定的方法完成纠错编码。其中msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;K是信息位的长度;opt是有些编码方式需要的参数。2)decode函数功能:译码函数语法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);说明:这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。它对接收到的码字,按method指定的方式进行译码;opt1,…,opt4是可选项的参数。6.参考文献[1]徐明远,邵玉斌MATLAB仿真在通信与电子工程中的应用.西安:西安电子科技大学学出版社,2005.6[2]唐向宏,岳恒立,郑雪峰MATLAB及在电子信息类课程中的应用(第二版).北京:电子工业出版社,2009.6[3]黄爱民,安向京,骆力.数字图像处理与分析基础[M].中国水利水电出版社,2005.6:135—196.[4]晏晖,姜鹏,陈贝.基于MATLAB工具箱的数字图像处理技术[J].《微计算机信息》(嵌入式与SOC)2010,26(9-2):211—215.
本文标题:基于MATLAB的循环码实验报告
链接地址:https://www.777doc.com/doc-6058879 .html