课程名称:信息论与编码课程设计题目:循环码的编码和译码程序设计指导教师:系别:专业:学号:姓名:合作者完成时间:成绩:评阅人:一、实验目的:1、通过实验了解循环码的工作原理。
2、深刻理解RS 码构造、RS 编译码等相关概念和算法。
二、实验原理1、RS 循环码编译码原理与特点设C 使某线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021 ,它的循环移位),,,(1032)1(---=n n n c c c c C也属于C ,则称该码为循环码。
该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。
其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。
如果一个线性码具有以下的属性,则称为循环码:如果n 元组},,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位得到的},,,{201)1(--=n n c c c c 也同样是S 中的一个码字;或者,一般来说,经过j 次循环移位后得到的},,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是S 中的一个码字。
RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。
码长:12-=mn信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1循环码特点有:1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。
2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。
3)码字的循环特性,循环码中任一许用码经过牡环移位后,所得到的码组仍然是许用码组。
对所有的i=0,1,2,……k -1,用生成多项式g(x)除n k ix-+,有:)()()(x b x g x a xi i ik n +=+- (2—7) 式中)(x b i 是余式,表示为:0,1,11,)(i i k n k n i i b x b x b x b ++=---- (2—8)因此,)(x b x i k n ++-是g(x)的倍式,即)(1x b x i k n ++-是码多项式,由此得到系统形式的生成矩阵为:(2—9)它是一个k ⨯n 阶的矩阵。
同样,由G ⨯T H =0可以得到系统形式的一致校验矩阵为:(2—10)已知(7,4)循环码的生成多项式和校验多项式分别为:1)(3++=x x x g ,1)(24+++=x x x x h 。
写得其生成矩阵和校验矩阵分别为:2、编码原理:有信息码构成信息多项式011)(m x m x m k k ++=-- ,其中最高幂次为k-1; 用kn x -乘以信息多项式m(x),得到的)(x m xkn -,最高幂次为n-1,该过程相当于把信息码(1-k m ,2-k m ,……,1m ,m )移位到了码字德前k 个信息位,其后是r 个全为零的监⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1101000011010000110100001101G ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=101110001011100010111H ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=------------0,01,01,00,1,21,20,11,11,10000010001b b b b b b b b b G k n x k k k n k k k k n k ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=------------1000100010,00,20,11,01,21,11,01,21,1b b b b b b b b b Hk k k k k n k n k k n k督位;用g(x)除)(x m x k n -得到余式r(x),其次数必小于g(x)的次数,即小于(n-k ),将此r(x)加于信息位后做监督位,即将r(x)于)(x m x kn -相加,得到的多项式必为一码多项式。
1)有信息码构成信息多项式m(x)=m k-1x k-1+``````m 0 其中高幂次为k-1。
2)用x n-k 乘上信息多项式m(x),得最高幂次为n-1,做移位。
3)用g(x)除x n-k m(x)和到余式r(x)。
编码过程流程图:3、译码原理: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)循环码中的一位错误。
解码过程流程图:4、纠错能力:由于循环码是一种线性分组码,所以其纠检错能力与线性分组码相当。
而线性分组码的最小距离可用来衡量码的抗干扰能力,那么一个码的最小距离就与它的纠检错能力有关。
定理: 对于任一个),(k n 线性分组码,若要在码字内 (1) 检测个错误,要求码的最小距离1+≥e d;初始化由R(x)确定S(x):错误!未找到引用源。
S(x)=0,无误码误由S(x)确定错误图样E(x) 纠错)()()(X R X E x c +=存储c(x)(2) 纠正个错误,要求码的最小距离12+≥t d ;(3) 纠正个错误同时检测个错误,则要求1++≥e t d ;循环码的译码分检错译码与纠错译码两类。
在无记忆信道上,对码字c ,差错图案e 和接收向量r 的多项式描述为)()()(x e x c x r +=定义)(x r 的伴随多项式为)(x s112210))((mod )()(--++++==r r xs x s x s s x g x r x s由于)),((mod 0)()()(x g x g x a x c ==所以))()(mod ()(x g x e x s =由此可见,0)(≠x s 则一定有差错产生,或说满足0))()(mod (≠x g x e 的差错图样)(x e 产生,它满足0))()(mod (=x g x e 。
循环码的检错译码即是计算)(x s 并判断是否为0三、实验分析1、实验测试结果,包括译码结果、误码率与信噪比之间的关系、生成多项式理想状态下,对信号随机的提取,编码器输入为1000001110001000,通过encode函数后,因为加入了监督码,信号变得复杂密集,编码输出为1011000101001110110001011000通过译码输出为1000001110001000,与编码输入一致。
说明循环码的检错和纠错能力性能好。
输出多项式为:g(x)=(x+a) (x+a2) (x+a3)=a6+a5x+a4x+a3x2+ a3x +a2x+x3以randint函数重新做一个输入信号并进行编码,结果与上例相似,输入与输出一致。
由上面所有的图可以发现,编码器输入信号并不完全相同,因为对信号的提取是随机的,所以码元也是随机的,信号经过编码器后,因为要加入监督码,所以波形变得更加密集了。
信号经过译码后,波形和编码器输入信号大致相同,说明循环码的检错和纠错能力可以。
信噪比与误码率的关系比较,从图中可看出,当信噪比在20以内时,误码率相对比较大,最高达到0.45以上,而当SNR大于20后,信噪比保持很稳定。
下面是误码率的数字显示:2、实验过程遇到的问题及解决方法刚开始并没有注意到运用循环码时可用上简便的Matlab自带函数,一直苦恼怎么进行纠错编码及解码,然后查找资料,收集了与循环码相关的函数(部分如下:)1)encode函数功能:编码函数语法:code=encode(msg,N,K,method,opt)说明:用method指定的方法完成纠错编码。
其中msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;K是信息位的长度;opt是有些编码方式需要的参数。
2)decode函数功能:译码函数语法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);说明:这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。
它对接收到的码字,按method指定的方式进行译码;opt1,…,opt4是可选项的参数。
3)cyclpoly函数功能:生成循环码的生成多项式。
语法:p=cyclpoly(N,K);p=cyclpoly(N,K,fd_flag);说明:从p=cyclpoly(N,K)中可找到一个给定码长N和信息位长度K生成多项式p,注意不是任意给定一个多项式都可以作为生成多项式。
4)randint函数功能:引起一致地分布的任意整数矩阵语法:out = randint(m)out = randint(m,n)out = randint(m,n,rg)out = randint(m,n,rg,state)在进行误码率与信噪比之间的关系编程后,Matlab一直显示其后才发现原来没有对加噪后的信号进行整形输出,于是加入for循环以四舍五入对信号进行整形设定。
for i=1:100for a=1:k+1if noisycode(i,a)<0.5noisycode(i,a) = 0;elsenoisycode(i,a) = 1;endendend四、RS码在现代通信系统中的应用RS编码起源于1960年MIT Lincoln实验室,经历了数十年的发展,RS码成为了研究最详尽,分析最透彻,应用最广泛,研究成果最多的码类之一。
1、在井下通信中的应用:由于井下空间小,供电系统布置受到很大局限,电磁干扰现象也很严重,通过选择合适的信道编码方式是抗干扰措施之一,可有效消除干扰,而由于RSce纠正t个m位的二进制错误会符号,而不管这t\个错误会符号是连续出现的还是离散出现,因此RS很适用于存在突发错误信道中,如井下工作,对系统码率的降低和可靠性的提高起重要作用。