试验BCH循环码的编码与译码_第1页
试验BCH循环码的编码与译码_第2页
试验BCH循环码的编码与译码_第3页
试验BCH循环码的编码与译码_第4页
试验BCH循环码的编码与译码_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6 / 5实验6 BCH循环码的编码与译码一、实验内容用VC或Matlab软件编写循环 BCH码的编码与译码程序。利用程序对教科书的例题做一个测试。二、实验环境1. 计算机2. Windows 2000 或以上3. Microsoft Visual C+ 6.0 或以上4. Matlab 6.0 或以上三、实验目的1. 通过BCH循环码的编码与译码程序的编写,彻底了解并掌握循环BCH的编码与译码原理2. 通过循环BCH码的编码与译码程序的编写,提高编程能力。四、实验要求1. 提前预习实验,认真阅读实验原理以及相应的参考书。2. 对不同信道的进行误码率分析。特别是对称信道,画出误码性能图。即信道

2、误码率与循环汉明码之间的关系。3. 认真填写实验报告。五、实验原理1. 循环BCH的编码与译码原理(略)2. 循环BCH的程序实现。六、实验步骤232ta ,.,a1.基本概念:设叵是GF (2m上的一个本原,t是整数,含有2t个跟g(x |为循环码生成多项式,并称为而原本预案BCH码。参数如下:在GF (2 上,并且最低次多项式码长:m 1n =2,其系数校验位数: r二n - k _ mt |最小码距:阮沁=2t石纠错能力:也。其中|m(mZ3)|和纠错能力tt (t v2mJL |是任意整数(1)有n=2m -1(2)在GF(2m )232ta,口 ,ot,口所2.计算方法:上找到一个算

3、出m,遭到一个m次的本原多项式p(xa,般情况下是利用本原多项式GF (2】域上的最小多项式m(x ), mt (x ),., mh(x),产生 GF(2m)一旦辿的根,分别计 2t个连续米次根扩域。(3 )计算2t个连续奇次幂之根所对应的最小多项式的公倍式,得到生成多项式 g(x)=LCM血乞)口3 (垒),叩么(x )(4)由关系式 C(x )=m(x )g(x |求得bch码字3.程序实现:对于 BCH (15,5) ,有 matlab 实现程序如下: BCH 编码enbch155.mfunction coded = bch155(msg_seq)%定义函数 bch 编码% 输入为 ms

4、g_seq 信息位% 输出为编码后的码元 codedg=1 0 1 0 0 1 1 0 1 1 1;%生成多项式系数n=15;k=5;% 从输入 msg_seq 中提取信息位display(' 信息位: ')%默认为 BCH ( 1 5, 5)msgif nargin<1nmsg=5;%判断输入信息 ,若未输入 ,系统自动产生 5 组信息码, 并显示出信息位msg=randi(0,1,nmsg,k)elselmsg = length(msg_seq);nmsg = ceil(lmsg/k);msg = msg_seq(:);zeros(nmsg*k-lmsg,1);msg

5、 = reshape(msg,k,nmsg).'endxx = msg zeros(nmsg,n-k);%将输入信息码 msg 拓展为矩阵形式的 xx% 进行编码 ,将 xx 编码为 codedcoded =zeros(nmsg,n);for i=1:nmsgq,r=deconv(xx(i,:),g); r=abs(rem(r,2);%产生余式coded(i,:)=r;endcoded = coded + xx; end%产生信息码 BCH 解码 debch155.mM=4;code = gf(code,M);m , n=size(code);decode=;code1=;T2=6;N

6、=15;mat=gf(2,M,code.prim_poly)A(N-1:-1:0'*(1:T2);Tx = 0 1 zeros(1,T2-1);for i=1:m ;code1=code(i,:);M=code1.m;T2=6;N=15;S = codel* (gf(2,M,code1.prim_poly)A(N-1:-1:0'*(1:T2);LambdaX = gf(1 zeros(1,T2),M,code1.prim_poly);Tx = 0 1 zeros(1,T2-1);L=0;for k = 1:T2;LambdaXTemp = LambdaX;Delta = S(k

7、) - LambdaXTemp(1+1:L)*(S(k-1:L)'if Delta.x;LambdaX = LambdaXTemp - Delta*Tx;if 2*L < k;L = k-L;Tx = LambdaXTemp/Delta;end;end;Tx = 0 Tx(1:T2);end;LambdaXValue = LambdaX.x;LambdaX = gf(LambdaXValue(1:max(find(LambdaXValue), M, code1.prim_poly); errLoc_int = roots(LambdaX);errLoc = log(errLoc_

8、int);for i = 1:length(errLoc);errorMag = 1;code1(N-errLoc(i) = code1(N-errLoc(i) - errorMag;end;decode=decode;code1;end;ccode = double(decode.x);decode = ccode(:,1:5);end 测试文件 bch_en_decode.m function bch_en_decode(msg) % 编码if nargin<1 code=enbch155();else code=enbch155(msg); %编码endcode=code+rand

9、err(5,15,1:3); % 模拟信道产生错误,每行有 1-3 个随机错误 display(' 信道传输中干扰后 , 接收到的信息 ');coder=rem(code,2) % 对 2 取余,使范围是 0、 1display(' 解码后 ');decode=debch155(coder)end4. 进行测试法一:不输入信息位,让系统自动产生信息位,在 matlab 中输入下面一行代码,得到结果 >> bch_en_decode()信息位:msg =0011111100111111000100000编码后码元coded =0011110111100

10、001111111111000111100000000信道传输中干扰后,接收到的信息coder =0001110101100001111111111000001100000011解码后decode =00111111001111110001000000110010010011011111110101100000000001100100110110001011101011000000010法二:输入信息位在 matalb 中输入下面两行代码,得到结果如下>> msg=1 10 1 11 11 11 000 01 00 01 00 00 0 1;>> bch_en_decode(msg)信息位:msg =1101111111000010001000001编码后码元 :coded =110111000010100111111111111111000010100110111000101001

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论