视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实验二:线性分组编译码及检错效果仿真实验指导V3
2025-10-02 15:11:48 责编:小OO
文档
线性分组码编译码及检错效果仿真

实验指导书

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     1

3、利用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%噪声的信号;下载本文

显示全文
专题