欢迎来到天天文库
浏览记录
ID:21497191
大小:201.39 KB
页数:9页
时间:2018-10-22
《bch码编译码matlab仿真》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、信道编码姓名:郭宇琦学号:xxx2009xxx一、实验目的1.复习巩固BCH码编码译码知识。2.使用matlab进行实践编写BCH,了解实际应用中BCH的编码译码过程。3.结合实践验证所学BCH码知识。二、实验原理BCH码是用于校正多个随机错误的多级、循环、错误校正、变长数字编码,是循环码的子类。本原BCH码编码原理如下:1.确定n、m、t.2.用函数构造扩域,q=2取二进制,3.取本原元,根据纠错能力t,确定连续根。通过逐个验证每个元素来找出每一个根的全部共轭根系。根据计算最小多项式。4.所有非共轭根系的最小多项式乘积得到生成多项式5.利用系统码编码方程,进行编码。BCH码译码方
2、法主要有Peterson译码法和Berlekamp迭代译码法等,其中Peterson译码方法如下:1.计算伴随式。已知接受向量,则2.求解错误位置。引入错误位置多项式,将求解错误位置的问题转化为求解线性方程组的问题3.用Peterson译码方法译码,解出错误位置多项式系数和错误图样,得到估值码字。(1).假设e=t,计算S行列式M的值。M=0则降阶,e=e-1,同样计算直到M≠0.(2)将上面得到的2t个连续根代入试根,求上述方程组解。取倒数即为错误位置。由此写出错误图样。(3)求出译码。每一步具体的实现方法,详见程序源代码注释。一、程序框图编码框图过信道框图译码框图一、实验结果分
3、析结果截图:上面是较高信噪比时127位BCH正确译码下面是较低信噪比时127为BCH错误译码结果框内容(加粗部分是手动输入内容,下划线是结果重点):---简易BCH编码译码系统---输入码长n=128错误:只支持本原BCH码输入码长n=127输入纠错能力t=6计算得码长k=85自动生成随机信息序列输入1,手动键入信息序列输入0:1随机生成的序列为m=0010101101010000011001101111001000111110110000000001111111010100001101110111010111011编码后生成码序列为001010110101000001100110
4、1111001000111110110000000001111111010100001101110111010111011100100100001001000010111100101011010101110过高斯白信道输入1,过理想信道输入0:1输入信道信噪比(单位分贝,15左右较合适):10接收码字为0010101101010000011001101111001000111110110000000001111111110100001101110111010111001100100100001001000010111100101110010101110发送码字为0010101101
5、010000011001101111001000111110110000000001111111010100001101110111010111011100100100001001000010111100101011010101110通过信道后出错4位错误图样为0000000000000000000000000000000000000000000000000000000000100000000000000000000000010000000000000000000000000000000101000000000译码结果为0010101101010000011001101111001
6、000111110110000000001111111010100001101110111010111011100100100001001000010111100101011010101110还原信息序列为m’=0010101101010000011001101111001000111110110000000001111111010100001101110111010111011译码正确一、实验小结整个过程严格按照所学BCH码相关知识编写,所得结论完全正确。二、源代码clcclearall%----------------------------------------------
7、disp('---简易BCH编码译码系统---')flag=1;while(flag)%输入nn=input('输入码长n=');m=0;while(2^m-1~=n&&m<20)%计算mm=m+1;endif(m==20)%非本原就重新输入disp('错误:只支持本原BCH码')elseflag=0;endendflag=1;while(flag)%输入tt=input('输入纠错能力t=');if((t>=floor((n-1)/2))
8、
9、(t<=0))disp(
此文档下载收益归作者所有