一、实验目的1、掌握循环码的编码原理2、掌握BCH码的编码方法3、了解编码与对误码性能的改善二、实验内容1、自行设置BCH码的参数,给出生成的BCH码;2、利用encode库函数实现编码;3、搭建一个通信仿真模块,并给出运行结果,分析BCH码对通信性能的影响;3、整理好所有的程序清单,并作注释。三、实验结果1、本原多项式4()1pxxx,可纠正2位错误时,生成多项式为1)(4678xxxxxg,写出生成矩阵,给出产生(15,7,2)BCH码的源程序,并给出运行结果。(1)生成矩阵由(15,7,2)BCH码的生成多项式1)(4678xxxxxg可知其生成矩阵1)()()()()()()()(467857892689107910114810111259111213610121314234563xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgxxgxgxxgxxgxxgxxgxxG则可知其生成矩阵100010111000000010001011100000001000101110000000100010111000000010001011100000001000101110000000100010111G(2)源程序:functionf=bchencod(a)%对信息元a进行编码G=[111010001000000;011101000100000;001110100010000;000111010001000;000011101000100;000001110100010;000000111010001];%(15,7,2)的生成矩阵t=input('输入0或者1');%t=0时产生(3,1),汉明编码所有码字t=1时对输入序列进行编码ift==1a=input('输入信息元序列:');%当t=0时,则用户手动输入信息元序列c=mod(a*G,2);%对应码字disp('(编码后的序列为:)');disp(c);%显示编码后的结果elsedisp('(15,7,2)BCH码为:');%当t=0时,对for循环得到的信息元序列进行编码fori=0:1:(2^7-2)%进行for循环,得到信息元序列a=dec2bin(i,7);%限定产生的二进制为7位c=mod(a*G,2);%对信息元a进行编码disp(a);%显示信息元disp('对应码字为:');disp(c);%显示编码结果endend(3)结果输入1时,结果如下:输入0时,结果如下:中间部分已省略,2、用encode函数对随机产生的序列进行BCH编码,给出编码结果。(1)、源代码msg=randint(15,11);%随机生成的信息元code=encode(msg,15,11,'bch');%对随机生成的msg进行BCH编码disp(code)%显示编码结果(2)、运行结果3、搭建一个通信仿真模块(采用BCH编码),并给出运行结果,分析哪些参数误码率有影响。运行结果为:参数设置如下:BernoulliBinaryGenerator和BCHEncoder:BinarySymmetricChannel:BCHDecoder:参数为10000、上图为设置不同参数时对误码率的影响:分析:(1)、实验中,软件的参数设置不正确会对误码率产生很大的影响,其中取样的大小同样会影响,当取样的值为1000时,误差要大于取样值为10000时的误码率。(2)、在BernoulliBinaryGenerator中,产生0的概率的设置对其误码率产生影响,当0和1随机产生的概率不相等时,根据信息序列和译码规则的不同会相应的对其误码率产生影响。(3)、在BinarySymmetricChannel中,错误概率的设置同样影响其误码率。若错误概率大于0.5时,误码率相对偏高错误概率小于0.5时,误码率相对偏低。(4)、BCHEncoder、BCHDecoder参数为编码与译码对应的BCH码的形式。N为码元长度,K为信息位长度。BinarySymmetricChannel(5)、Errorprobability为译码时,码元的错误率。它的值直接影响结果,值越大,则结果出现的错误码元数也就越多,差错率也越大。通信系统的传输性能也越差。三、实验心得通过本实验,加深了对BCH码编码原理的理解,学会了使用MATLAB软件进行模拟仿真编写BCH码,其中实现的方法有,用编程的方法实现,也可以用仿真模块来实现。并且在用仿真模块实现BCH编码时,通过对参数的设置,知道了影响误码率的各因素。