
实验二:线性分组编译码及检错效果仿真实验指导V3.doc
8页线性分组码编译码及检错效果仿真实验指导书2012年11月一、实验目的1、通过实验掌握线性分组码中的汉明码的编码原理2、通过实验掌握汉明码的译码3、了解编码与检错能力之间的关系二、实验内容1、随即生成50组4位信息序列作为输入;2、参照书上p223.4-65给定关系构建(7,4)汉明码,计算所设计出的汉明码的所有码字集合;3、发送端采用生成矩阵对信息码列进行编码得到编码码字,该编码序列在信道上传时被随机加入噪声,用校验矩阵对收到信息进行检错4,比较加入的误码数和检测出的误码数,检验检错效果实验内容的框图如下:三、实验设计原理1、线性分组码的定义将信源的输出序列分成长为的段,按一定的规则将编为长为的码字(码符号序列)码字共有位,其中k位为信息位,位为校验位,假设共有M个消息序列,则对应的M个码字的集合称为一个分组码,记为C在上述分组码中,若与的对于关系是线性的,则称为线性分组码2、生成矩阵和校验矩阵(1)生成矩阵根据线性分组码的定义,可以得出如下所述的一种构成线性分组码的方法定义为该分组码的生成矩阵,则有(2)校验矩阵为了在接收端进行正确的译码,可以定义一个对应于生成矩阵G的矩阵H,称为校验矩阵或监督矩阵,满足或 (3-6)由和得或(3-7)由于是阶行矩阵,故式中0亦为阶行矩阵。
式(3-7)事实上给出了译码的实现方法,因为校验矩阵是已知的,如果接收到的码矢与它转置的乘积为0,则说明接收无误,否则说明存在错误3. 线性分组码的编码将信息码与生成矩阵相乘,得到的即为编码后的信息码4、线性分组码的译码(1)用许用码组进行译码列出线性分组码的所有许用码组,接收到y后,到许用码组中中去找(因为个矢量全部列在其中,总可以找到),如果接收到的字是个合法码字,那么可以下结论说没有错误发生(这个结论可能是错的,就是当噪声把一个合法码字改变成另一个合法码字时,但它的错误概率很低)如果接收到的码字是一个禁用码字时,我们推测发生了错误2)译码表译码接收到码字y后,将y与HT进行相乘,如果得到的为0矢量,则为正确码字,如为非零,则认为码字发生了错误,可以通过请求发送端重发来纠正码字四、实验步骤1、输入(可由计算机随机产生)N(N>50)组4位随机信息,可循环输入;2、每个循环内,输入的4位信息与生成矩阵相乘,得到其编码码字;3、用随机函数矩阵对编码码字添加信道噪声引起的误码(0误码为1,或1误码为1),得到接收端带噪声的码字,同时统计增加了误码的码字数A;4、对接收端带有噪声的所有编码码字进行汉明译码,统计检查出来的错误码字数B。
5、计算检错率B/A五、完成实验报告1、实验目的2、实验内容3、给出产生汉明码的源程序,并给出运行结果,要求得到所有码字4、随机加入噪声后译码,对接收端码字进行纠错,判断其是否能检测出所有的噪声,并同给定的误码率进行对比,输出结果;5、总结实验遇到的问题及解决方法六、参考实例及重要提示1、利用库函数(encode)来实现编码语法:code=encode(msg, N, K, method, opt);说明:这个函数可完成六种主要的差错控制编码:汉明码、线性分组码、循环码、BCH码、R-S码和卷积码Msg是信息;method注明编码方式;N是码字长度;K是信息位的长度;opt是有些编码方式需要的参数,具体含义见下表encode函数的参数用法method含义opt‘hamming’汉明编码可用来指定一个原始多项式,如省略,则使用默认多项式‘linear’线性分组码opt必须指定一个校验矩阵‘cyclic’循环码必须指定一个生成多项式‘bch’BCH码可用来指定一个生成多项式,如省略,则使用默认生成多项式例:msg=randint(1,40);%生成一行40列的信息序列code=encode(msg,7,4,'hamming');%进行汉明编码2、利用生成矩阵实现编码例:已知,u=[1 0 1 1],求c。
G=[1 0 0 1 0 1 1;0 1 0 1 0 1 0;0 0 1 1 0 0 1;0 0 0 0 1 1 1];%生成矩阵u=[1 0 1 1];%信息码字c=rem(u*G,2);%生成码字disp(c) 1 0 1 0 1 0 13、利用m文件来实现编码以下是产生(7,4)汉明码的程序4、利用库函数(decode)来实现译码语法:msg=decode(code, N, K, method, opt1, opt2);说明:这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同decode函数的参数用法method含义opt‘hamming’汉明译码opt1可用来指定一个原始多项式,也可省略不用,opt2不用‘linear’线性分组码译码opt1必须指定一个校验矩阵,opt2用来指定一个检错逻辑电路,如省略,则默认单个错纠正逻辑‘cyclic’循环码译码opt1是必须指定的生成多项式,可使用cycpoly函数选择一个合适的循环多项式,opt2用来指定一个检错逻辑电路,如省略,则默认单个错纠正逻辑‘bch’BCH码译码opt1指定纠错能力,如省略,则此函数通过bchpoly计算纠错能力,opt2指定BCH码的生成多项式,如省略,则采用默认的生成多项式例:code=randint(1,70);%生成一行70列的码序列msg=decode(msg, 7,4, 'hamming');%进行汉明译码5、重要提示1、rem语句生成码字,注意2进制的特殊性;2、用rem(code+rand(m,N)>0.95,2 )生成有5%噪声的信号;。
