(6,3)线性分组码编码分析与实现.

(6,3)线性分组码编码分析与实现.
(6,3)线性分组码编码分析与实现.

吉林建筑大学

电气与电子信息工程学院

信息理论与编码课程设计报告

设计题目:线性分组码编码的分析与实现专业班级:电子信息工程

学生姓名:

学号:

指导教师:

设计时间:2014.11.24-2014.12.5

第1章 概述

1.1 设计的作用、目的

《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。

通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。

1.2 设计任务及要求

设计一个(6, 3)线性分组码的编译码程序:完成对任意序列的编码,根据生成矩阵形成监督矩阵,得到伴随式,并根据其进行译码,同时验证工作的正确性。

1.理解信道编码的理论基础,掌握信道编码的基本方法; 2.掌握生成矩阵和一致校验矩阵的作用和求解方法;

3.针对线性分组码分析其纠错能力,并能够对线性分组码进行译码; 4.能够使用MATLAB 或其他语言进行编程,实现编码及纠错,编写的函数要有通用性。

1.3设计内容

已知一个(6,3)线性分组码的Q 矩阵:设码字为(c 5, c 4, c 3, c 2, c 1, c 0)

111

011

1

0Q ??

??=??????

求出标准生成矩阵和标准校验矩阵,完成对任意信息序列(23个许用码字)的编码。

当接收码字R 分别为(000000), (000001), (000010), (000100), (001000), (010000), (100000), (100100)时,写出其伴随式S ,以表格形式写出伴随式与错误图样E 的对应关系。纠错并正确译码,当有两位错码时,假定c 5位和c 2位发生错误。

第2章 写所设计题目

2.1设计原理

1. 线性分组码的标准生成矩阵和标准校验矩阵

(1)(n ,k )线性分组码的性质

1、封闭性。任意两个码组的和还是许用的码组。

2、码的最小距离等于非零码的最小码重。

对于长度为n 的二进制线性分组码,它有种2n 可能的码组,从2n 种码组中,可以选择M=2k 个码组(k

对于码组长度为n 、信息码元为k 位、监督码元为r =n -k 位的分组码,常记作(n ,k )码,如果满足2r -1≥n ,则有可能构造出纠正一位或一位以上错误的线性码。

(2)生成矩阵和校验矩阵

线性分组码码空间C 是由k 个线性无关的基底1-k g ,…1g 0g ,张成的k 维n 重子空间,码空间的所有元素都可以写成k 个基底的线性组合,即

=C 001111g m g m g m k k +++--

这种线性组合特性正是线性分组码。为了深化对线性分组码的理论分析,可将其与线性空间联系起来。由于每个码字都是一个二进制的n 重,及二进制n 维线性空间Vn 中的一个矢量,因此码字又称为码矢。

用i g 表示第i 个基底并写成n ?1矩阵形式[]01)2()1(,,,,i i n i n i i g g g g g --=再将k 个基底排列成k 行n 列的G 矩阵,得:

=G []T

k g g g 011,,,?-=???

???

?????

???------0001

)

1(01011)1(10)1(1

)1()

1)(1(g g g g g g g g g n n k k n k

k 个基底即G 的k 个行矢量线性无关,矩阵G 的秩一定等于k ,当信息元确定后,

码字仅由G 矩阵决定,因此称这n k ?矩阵G 为该()k n ?线性分组码的生成矩阵。

基底不是唯一的,生成矩阵也就不是唯一的。事实上,将k 个基底线性组合后产生另一组k 个矢量,只要满足线性无关的条件,依然可以作为基底张成一个码空间。不同的基地有可能生成同一个码集,但因编码涉及码集和映射两个因素,码集一样而映射方法不同也不能说是同样的码。

基底的线性组合等效于生成矩阵G 的行运算,可以产生一组新的基底。利用这点可使生成矩阵具有如下的“系统形式”:

[]??

???

????

???==---------0001

)

1(01011)1(10)1(1

)1()1)(1(10

010

001

p p p p p p p p p P I G k n k n k k k n k k

这里P 是()k n k ?-矩阵;k I 是k k ?单位矩阵,从而保证了矩阵的秩是K 。

与任何一个()k n ,分组线性码的码空间C 相对应,一定存在一个对偶空间D 。事实上,码空间基底数k 只是n 维n 重空间全部n 个基底的一部分,若能找出另外k n -个基底,也就找到了对偶空间D 。既然用k 个基底能产生一个()k n ,分组线性码,那么也就能用k n -个基底产生包含k

n -2

个码字的()k n n -,分组线性码,

称()k n n -,码是()k n ,码的对偶码。将D 空间的k n -个基底排列起来可构成一个

()n k n ?-矩阵,将这个矩阵称为码空间C 的校验矩阵H ,而它正是()k n n -,对偶

码的生成矩阵,它的每一行是对偶码的一个码字。C 和D 的对偶是互相的,G 是

C 的生成矩阵又是

D 的校验矩阵,而H 是D 的生成矩阵,又是C 的校验矩阵。

由于C 的基底和D 的基底正交,空间C 和空间D 也正交,它们互为零空间。因此,()k n ,线性码的任意码字c 一定正交于其对偶码的任意一个码字,也必定正交于校验矩阵H 的任意一个行矢量,即0=T cH 。由于生成矩阵的每个行矢量都是一个码字,因此必有0=T GH 。对于生成矩阵符合“系统形式”G 的系统码,其校验矩阵也是规则的,必为:

[]

k n T I P H --=

上式中的负号在二进制码情况下可以省略,因为模2减法和模2加法是等同的。

(3)信息码元及对应码字的关系

(n ,k )码字中的任一码字i c ,均可以由这组基底的线性组合生成,即

[]12

i i n n n k c m G m m m G ---=

式中[]12

i n n n k m m m m ---=的是k 个信息元组的信息组,因此其信息码元及

对应码字的关系如表一所示:

表一 信息码元及对应码字关系

2. 线性分组码的伴随式与译码

(2)码的距离及检错能力

两个码字之间,对应位取之不同的个数,称为汉明距离,用d 表示。一个码的最小距离min d 定义为{}),(,,,min ),(m in k n c c j j d d j i cj ci ∈≠=,两个码字之间的距离表示了它们之间差别的大小。距离越大,两个码字的差别越大,则传送时从一个码字错成另一码字的可能性越小。码的最小距离愈大,其抗干扰能力愈强。

任何最小距离min d 的线性分组码,其检错能力为()1min -d 纠错能力t 为

??

????-

=21m i n d I N T t 最小距离min d 表明码集中各码字差异的程度,差异越大越容易区分,抗干扰能力自然越强,因此成了衡量分组码性能最重要的指标之一。估算最小距离是纠错码

设计的必要步骤,最原始的方法是逐一计算两两码字间距离,找到其中最小者。

含k

2个码字的码集需计算

()

2

122-k k 个距离后才能找出min d ,费时太多,实用中

还有一些更好更快的方法。

线性分组码的最小距离等于码集中时非零码字的最小重量,即

(){}i C w d m i n

m i n = 0≠∈i i C C C 及 这里利用了群的封闭性,由于分组码是群码,任意两码字之和仍是码字,即C C C C i k j ∈=⊕。

因此任意两码字间的汉明距离其实必是另一码字的重量,表示为()()()(){}(){}i k j i k j k i C w C C d C w C C w C C d min ,min ,,==⊕=。于是可将最小距离问题转化为寻找最轻码字问题,含k 2个码字的码集仅需计算k 2次。

码的检错能力取决于码的最小距离,但还需说明的另一点是码的总体检错能力不仅仅与min d 有关。检错能力t 只是说明距离t 的差错一定能纠,并非说距离大于t 的差错一定不能纠。事实上,如果有2k 个码子,就存在()2212k k - 个距离,这并非相等的。比如最小距离min 3d = ,检错力1t = ,是由码21C C 的距离决定, 只要2C 朝1C 方向偏差大于1就会出现译码差错;然而若2C 朝3C 方向偏差3,译码时仍可正确地判断为2C 而非3C 。可见,总体的、平均的纠错能力不但与最小距离有关,而且与其余码距离或者说与码子的重量分布特性有关,把码距(码重)的分布特性称为距离(重量)谱,其中最小的重量就是min d 。正如信息论各符号等概时熵最大一样,从概念上可以想象到:当所有码距相等时是(重量谱为线谱)码的性能应该最好;或者退一步说,当各码距相当不大时(重量谱为窄谱)性能应该叫好。事实证明确实如此,在同样的min d 条件下,窄谱的码一般比宽谱的码更优。纠错重量谱的研究具有理论与现实意义,不仅仅是计算各种译码差错概率的主要依据,也是研究码的结构、改善码集内部关系从而发现新的好码的重要工具。但目前除了少数几类码如汉明码、极长码等的重量分布已知外,还有很多码的重量分布并不知道,距离分布与性能之间确切的定量关系对于大部分码而言尚在进一步研究当中,特别当n 和k 较大时,要得出码重分布是非常困难的。

重量谱可以如下多项式来表示,称为重量算子,即

()2

3

4

012341

n

n

n n i i A x A A x A x A x A x A x A x ==+++++

=∑

式中的含义:在码长n 的码集里,包括重量为0的码子0A 个(线性码一定包含一个重量为0的全0码),码重为1的码字1A 个,,重量为n 的码字n A 个。

(2)伴随式与译码

码字()1210,

,,,n C c c c c -=在传输过程中受到各种干扰,接收端收码

()1210,,,,n R r r r r -=已不一定等于发码C ,两者间的差异就是差错,差错是多样

化的,我们定义差错的式样为差错图样E ,即

()()110111100,,,,,,n n n E e e e R C r c r c r c ---==-=---

对于二进制码,模2减等同模2加,因此有 mod 2E R C R C E

=+=+及

利用码字与校验矩阵的正交性T CH ,可检验收码R 是否错误,即

()0

00T T T T T T RH C E H CH EH EH EH =?=+=+=+=?

≠? 定义T RH 运算结果为伴随式S ,即 ()110,

,,T T n k S s s s RH EH --===

可见,虽然R 本身与发码有关,但乘以T H 后的伴随式T T RH S EH == 仅与差错图E 有关,只反映信道对码字造成怎样的干扰而与发什么码C 无关了。于是可以先利用收码R 和已知的H 算出的伴随式S ;再利用S 算出差错图样E 。这种思路下的编译码过如图一框图所示。

图一 编译码过程的框图

在此过程中,T RH 和R E +的计算都是确定性的,而从S 计算E 却带有随机性。这是因为伴随式S 是一个重失量,二进制时只有种肯那个的组合,而差错图样E 是n 重失量,有种可能的组合,因此S 与E 不存在一一对应关系。

假设接收端收到的码字为B ,那么它和原来发送端发送的码字A 之间就有可能存在着误差。即在码组{}01

2

3

4

5

6

a a a a a a a A =中的任意一位就有可

能出错。这样我们在接收端接收到一个码组是就有可能判断错发送端原来应该要表达的意思。为了描述数据在传输信道中出现错误的情况,引入了错误图样E ,在错误图样中,0代表对应位没有传错,1代表传输错误。实际上错误图样E 就是收序列与发送序列的差。所以在译码中用接收到的码字B 模尔加错误图样E 就可以得到发送端的正确码字A 。因此译码的过程就是要找到错误图样E 。

定义:校正子S

()

T

T

T T

T H E H E H A H E A H B S *****=+=+==

因为A 是编得的正确码字。根据前面所叙述,它和监督矩阵的转置相乘为0。显然,S 仅与错误图样有关,它们之间是一一对应的关系。找到了校正子S ,也就可以找到E 。而与发送的码字无关。若0=E ,则0=S ;因此根据S 是否为0可进行码字的检错。

如果接收码字B 中只有一位码元发生错误,又设错误在第i 位。即11=-i E ,其他的i E 均为0。在后面的译码程序中,建立了一个校正子S 与错误图样E 对应的表。也就是收到一个B 序列,就可以通过计算得到一个校正子,而每一个校正子都对应着一个错误图样E ,再通过B 模尔加上E ,就可以得到正确的码字A 。

因为在不同的错误序列B 中,同一位码元错误时对应的E 是一样的,所以可以利用0000000这个正确的码字让它每位依次错误,来求得它的八个校正子。而这时的矩阵B 就是错误图样E 。

2.2设计步骤 1. 编码过程

监督矩阵H 和生成矩阵G 的关系: 已知给出的(6,3)线性分组码的Q 矩阵:

011101110Q ??

??=??

????

则可以根据T P Q = ,[]k G I P =求出生成矩阵:

111

00011

1

010

101011

1

00

1

1

10

T

P Q G ??

??????===??????????

?? 由k H H I ??=??可求出监督矩阵H 为:

??

??

?

?????=100011010101001110H 有了生成矩阵后则可以根据输入的四位信息位和生成矩阵相乘得到编码矩阵,即MATLAB 函数为:()2,*G I rem C = ,其中C 为编码后的结果,I 为信息矩阵,G 为生成矩阵。

则编码的所有情况为:

编码序列: 信息位 || 监督位

??

?

??

?

?

?

?

???

?

???????

??????=000111011011101101110001110110101010011100000000C

2. 译码过程

对于译码过程来说,同样由上知道监督矩阵:

????

?

?????=100011010101001110H

H 矩阵与()k n ,码的任何一个许用码字进行相乘的结果必等于0,即若

G m C ?=是任一()k n ,码字,则必有0=?T H C 。若不属于许用码字,或有传输差错,且差错位数在()k n ,码纠错能力内,则运算结果将为非0值,此时,可以纠错或检错重发。

(1)当接受码字为()000000时:

伴随式[][]00

111011100000000001000100

01T

S R H ????????

=?=?=?

?????

????

所以此时接受编码无错误。 (2)当接受码字为()000001 时:

伴随式[][]10111011100000010011000100

01T

S R H ????????

=?=?=?

?????

????

所以,此时接受编码第一位发生错误,纠错后的正确译码为()000000。 (3)当接受码字为()000010时:

伴随式[][]21011

10000010010100010001T S R H ??????

=?=?=?

?????

????

所以,此时接受编码第二位发生错误,纠错后的正确译码为()000000。 (4)当接受码字为()000100时:

伴随式[][]30111011

100001001001000100

01T S R H ????????

=?=?=?

?????

????

所以,此时接受编码第三位发生错误,纠错后的正确译码为()000000。 (5)当接受码字为()001000时:

伴随式[][]40111011100010001101000100

01T

S R H ????????

=?=?=?

?????

????

所以,此时接受编码第四位发生错误,纠错后的正确译码为()000000。 (6)当接受码字为()010000时:

伴随式[][]50111011

100100001011000100

01T S R H ????????

=?=?=?

?????

????

所以,此时接受编码第五位发生错误,纠错后的正确译码为()000000。 (7)当接受码字为()100000时:

伴随式[][]61011

10100000011100010001T S R H ??????

=?=?=?

?????

????

所以,此时接受编码第六位发生错误,纠错后的正确译码为()000000。 (8)当接受码字为()100100时:

伴随式[][]70111011

101001001111000100

01T S R H ????????

=?=?=?

?????

????

因为伴随式S 与差错图样E 之间存在T S EH =其中由上面T S RH =的关系可知,所以,此时接受编码第五位和第二位发生错误,纠错后的正确译码(110110)。

当编码矩阵与生成矩阵的转置矩阵相乘时,若当其中的一位编码或两位出现差错时会有八种情况,则这些情况列出错码矩阵如下:

表5.1 伴随式S 与错误图样E 的对应关系

第3章仿真程序及结果分析

3.1 仿真程序

clear all

close all

H=[0 1 1 1 0 0;1 0 1 0 1 0;1 1 0 0 0 1]; %监督矩阵H

G=gen2par(H); %求H阵的生成矩G I=[0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1];

C=rem(I*G,2); %求码字C

disp('所得的编码结果为:C='); %显示输出码字C

disp(C);

%信道译码程序

clear all;

close all;

H=[0 1 1 1 0 0;1 0 1 0 1 0;1 1 0 0 0 1]; %监督矩阵H

B=input('请输入接收码组B:');

[a,b]=size(B); %返回数组B的维数E=[0 0 0 0 0 0;0 0 0 0 0 1;0 0 0 0 1 0;0 0 0 1 0 0;

0 0 1 0 0 0;0 1 0 0 0 0;1 0 0 0 0 0;0 1 0 0 1 0];

S=rem(B*H',2); %求校验子S

i=1;

for i=1:1:a

M(i,1)=S(i,1).*4+S(i,2).*2+S(i,3); %求校验子所表示的十进制整数end

for i=1:1:a

switch(M(i,1))

case 0

A(i,:)=B(i,:)+E(1,:);

case 1

A(i,:)=B(i,:)+E(2,:);

case 2

A(i,:)=B(i,:)+E(3,:);

case 4

A(i,:)=B(i,:)+E(4,:);

case 6

A(i,:)=B(i,:)+E(5,:);

case 5

A(i,:)=B(i,:)+E(6,:);

case 3

A(i,:)=B(i,:)+E(7,:);

case 7

A(i,:)=B(i,:)+E(8,:);

end

end

for i=1:1:a

switch(M(i,1))

case 0

disp('没有出现错误!');

case 1

disp('注意:第1位出现一个错误!请纠正!');

case 2

disp('注意:第2位出现一个错误!请纠正!');

case 4

disp('注意:第3位出现一个错误!请纠正!');

case 6

disp('注意:第4位出现一个错误!请纠正!');

case 5

disp('注意:第5位出现一个错误!请纠正!');

case 3

disp('注意:第6位出现一个错误!请纠正!');

case 7

disp('注意:第5位和第2位出现两个错误!请纠正!'); end

end

A=rem(A,2); %求出正确的编码disp('检纠错后的码组A=');

disp(A); %显示正确的编码j=1;

while j<=3 %提取信息位

I(:,j)=A(:,j);

j=j+1;

end

disp('译出的信息序列I=');

disp(I); %显示原信息码

3.2 仿真结果

图一输出编码结果和无错误输入

图二有一位错误输入时显示图

图三有两位错误输入时显示图

3.3结果分析

1.输出编码结果及输入正确接收码的译码结果分析

由图一可以看出编码的结果的八种情况和在推导过程中运算的结果是一致的,所以我们可以知道程序的编码过程是正确的。对于译码过程而言,当界面显示“请输入接收码组B:”,然后从提示符后输入:[0 0 0 0 0 0],由于输入的接收码组与编码后的码字一致,它提取了每个码组的前四位,即信息位,由结果看出译码过程是正确的,并没有出现错译的情况,可见程序的译码片段是正确的。

2.输入一位错误时的结果分析

由图二可以看出,当界面显示“请输入接收码组B:”。然后从提示符后输入:[0 1 0 0 0 0],由图二有一位错误输入时的显示图所知,接收码组的第五位发生了错误,经程序纠检错误后改正了接收序列的错误,并且正确译出了信息位。可见程序的纠错功能也是可以实现的,以上结果进一步证实了,系统译码程序的正确性。

3.输入两位特定位错误时的结果分析

由图三可以看出,当界面显示“请输入接收码组B:”。然后从提示符后输入:[0 1 0 0 1 0], 由图三有两位错误输入时的显示图所知,接收码组的第五位和第二位发生了错误,经程序纠检错误后改正了接收序列的错误,并且正确译出了信息位,校正子是111,错误图样是100100,所以说明理论得以验证,可见程序的纠错功能也是可以实现的,

第4章总结

通过这次的课程设计,让我对MATLAB软件有了更深的了解,对MATLAB 语言也有了更加深入的学习和理解。在本次的设计中,我了解了MATLAB中很多函数的用法,提高了我编程的能力,在软件仿真上,提高了自己的动手能力和学习能力,为以后的学习打下了良好的基础。

我学习到了很多东西,让我对线性编码有了一个全新的认识,对Matlab的掌握也进步了很多,为以后的学习中出现的可能问题做好了准备,锻炼了自己的动手能力和设计能力,掌握了一种科技工具,丰富了自己的学习生活。整个实验过程中我懂得了许多东西,在查找的过程中我们也知道了许多原来不知道的东西,对于源代码的修改以及成功利用也树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在实验过程中的成功喜悦。

通过对线性分组码中的线性分组码的编译码编程实现,了解到线性分组码的构成方式是把信息序列分成每k个码元一段,并由这k个码元按一定规则产生r 个校验位,组成长度为n=k+r的码字,用(n,k)表示。信息码元与校验位之间为线性关系。并且知道了线性分组码的编码过程信息码元与校验位之间的线性关系实现起来是十分简单的.

对于码组长度为n、信息码元为k位、监督码元为r=n-k位的分组码,如果满足2r-1≥n,则有可能构造出纠正一位或一位以上错误的线性码。就像本设计的(6,3)分组码的(n,k)中,n=6,k = 3,r≥3能纠正一位误码,检测到两位误码。

运用MATLAB语言进行编程,可以明显的知道编码的过程和译码时出现的错误,码字的最小距离是3时,可以纠正一位错误,当输入特定的两位错误时,该码字还可以纠正这两位错误,这种情况在编程结果的命令窗口中可以明显看到。线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术之一。通过课程设计可以学习到在书本上学不到的知识,可以了解在课堂上理解不了的概念,课程设计是一个学者从理论走向实践必不可少的过程,让我们真正的可以从书本过渡到实践,让我们可以真正的成为一个可以为国家作出杰出贡献的栋梁之才。

参考文献

[1] 曹雪虹,张宗橙.信息论与编码(第二版).北京:清华大学出版社.2009

[2] 吕锋,王虹,刘皓春,苏扬.信息论与编码.北京:人民邮电出版社.2004

[3] 樊昌信,曹丽娜.通信原理(第六版).北京:国防工业出版社.2006

[4] 王慧琴.数字图像处理.北京:北京邮电大学出版社.2007

[5] 孙丽华. 信息论与纠错编码.电子工业出版社.2005

[6] 罗建军. MATLAB教程.电子工业出版社.2007

移动通信实验线性分组码卷积码实验

实验二抗衰落技术实验(4学时) 1.线性分组码实验 2.卷积码实验 姓名: 学号: 班级: 日期: 成绩:

1、线性分组码实验 一、实验目的 了解线性分组码在通信系统中的意义。 掌握汉明码编译码及其检错纠错原理,理解编码码距的意义。二、实验模块 主控单元模块 2号数据终端模块 4号信道编码模块 5号信道译码模块 示波器 三、实验原理

汉明码编译码实验框图 2、实验框图说明 汉明码编码过程:数字终端的信号经过串并变换后,数据进行了分组,分组后的数据再经过汉明码编码,数据由4bit变为7bit。 注:为方便对编码前后的数据进行对比观测,本实验中加入了帧头指示信号。帧头指示信号仅用于线性分组码编码时将输入信号的比特流进行分组,其上跳沿指示了分组的起始位置。 四、实验步骤 (注:实验过程中,凡是涉及到测试连线改变或者模块及仪器仪表的更换时,都需先停止运行仿真,待连线调整完后,再开启仿真进行后续调节测试。) 任务一汉明码编码规则验证 概述:本项目通过改变输入数字信号的码型,观测延时输出,编码输出及译码输出,验证汉明码编译码规则。 1、登录e-Labsim仿真系统,创建实验文件,选择实验所需模块和示波器。 2、按表格所示进行连线。 3、调用示波器观测2号模块的DoutMUX和4号模块的编码输出TH4编码数据,

6、此时系统初始状态为:2号模块提供32K编码输入数据,4号模块进行汉明码编码,无差错插入模式,5号模块进行汉明码译码。 7、实验操作及波形观测。 0000 0001 0010

0100 0101

0111 1000

实验二线性分组码的编译码报告

信息论与编码实验报告 理学院班级学号(后两位)姓名 理学院班级学号(后两位)姓名 实验名称 实验二、线性分组码的编译码 实验设备 (1)计算机(2)所用软件:Matlab 或者C 实验目的 了解线性分组码编译码的基本原理及其特点;熟练掌握线性分组码编译码的方法与步骤;实验内容 根据线性分组码编译码的方法步骤,编写对应编译码程序; 实验报告要求 简要总结线性分组码编码和采用伴随式纠错译码的基本原理及步骤; 讨论(6,3)线性分组码的编码。系统生成矩阵如教材P91页例5.2.4所示。手工录入或电脑随机生成一段消息序列,实现线性分组码的编码的Matlab源程序。(1星) 实现对上述无差错的编码进行译码的Matlab源程序。(2星) 在上述编码后的码序列中,每隔6位产生一位或0位随机误差,然后采用伴随式纠错译码,恢复原来的消息序列。(2星) 5、友好界面。(3星) 实验报告在实验后一周内交给老师,报告单一律用A4纸写,以此单为封面,装订成册。 完成时间:2016年5月9 日 简要总结线性分组码编译码的基本原理及步骤; 分组码是一组固定长度的码组,可表示为(n , k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k 个监督位的作用就是实现检错与纠错。对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k

线性分组码的信道编码和译码

clear; clc; %编码 G=input('请输入生成矩阵G,例如:G=[1 0 1 1 1;0 1 1 0 1]\n G='); [k,n]=size(G); r=n-k; m=input('请输入需传送信息m,如m=[0 0 0 1 1 0 1 1]\n m='); l=length(m); if(mod(l,k)) disp('输入的信息有误'); else ge=l/k; %将输入序列转化成矩阵m temp1=[]; for i=1:ge temp1(i,:)=m(k*(i-1)+1:i*k); end m=temp1; %求校验矩阵H c=mod(m*G,2); A=G(:,k+1:n); H=[A',eye(r)]; disp('校验矩阵');H disp('译码矩阵');c end disp('敲回车键继续'); pause %解码 y=input('输入接收序列y,如:y=[0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0]\n y='); temp2=[]; for i=1:ge temp2(i,:)=y(1,n*(i-1)+1:i*n); end y=temp2 s=mod(y*H',2); e=s*pinv(H'); for i=1:ge for j=1:n if(e(i,j)>0.5-eps) e(i,j)=1; else e(i,j)=0; end end end cc=mod(y+e,2); %cc=xor(y,e) sc=cc(:,1:2); disp('差错图样'); e disp('估计值'); cc disp('译码序列'); sc

线性分组码实验报告(DOC)

综合性设计性实验报告 专业: 学号: 姓名: 实验所属课程:信息论与编码 实验室(中心):信息技术软件实验室 指导教师: 2

教师评阅意见: 签名:年月日实验成绩: 一、题目 线性分组码编译码实验 二、仿真要求 1.分别用不同的生成矩阵进行(7,4)线性分组码的编码,经调制解调后译 码,并比较两种线性分组码的纠错能力。 2.掌握线性分组码的编码原理、编码步骤和译码方法。 3.熟悉matlab软件的基本操作,学会用matlab软件进行线性分组码的编码 和译码。 三、仿真方案详细设计 编码: 本实验采用的是(7,4)线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(3×4)的矩阵,由监督方程和(4×4)的单位矩阵构成,生成矩阵G为(4×7)的矩阵,由(4×4)的单位矩阵和监督矩阵的转置矩阵构成。实现过程为: 1、将要编码的序列先整形,整为4列 2、如果序列不能被4整除在后边补0使其能被4整除 3、将整形后的序列与生成矩阵G相乘即得到编码后的码字 在本实验中,分别生成两种生成矩阵,在产生了生成矩阵后根据输入的四位信息位和生成矩阵相乘即可得到编码矩阵。

译码: 在译码过程中,我们利用错误图样和伴随式来进行纠错。 1、设一个接收码字矩阵为R,R*H'=S(模2乘),则S为码字对应的伴随 式矩阵如果S=0则说明接受码字无差错; 2、如果S不为0,查看矩阵S中不为0的那行所在行数,该行即收码字错 误所在行i; 3、将S转置,将不为0的一列与H每一列进行比较,找到H中相同列,该 列的列数即为错误所在列; 4、由步骤2和3得到错误具体位置,模2加对应的错误图样就可得到正确 码字。 BPSK调制: BPSK调制利用载波的相位变化来传递数字信息,振幅和频率保持不变。双极性的全占空矩形脉冲序列与正弦载波相乘就得到调制信号。因此进行调制时首先进行码形变换变为双极性的,再经乘法器与载波相乘得到调制信号。其具体实现方法如下: 1、将0、1序列变为-1、1序列; 2、将序列与载波相乘,为‘1’时与载波相位相同,为‘-1’时与载波相位相反。 BPSK解调: 解调是产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号,进而通过抽样判决得出原始信号。解调是调制的逆过程,其作用是从接受信号中恢复出原基带信号。解调的方法分为两类:相干解调和非相干解调(如包络检波)。相干解调也称同步检波,适用于所有线性调制信号的解调。其关键是必须在已调信号的接收端产生与信号载波同频同相的本地载波。本次仿真实验采用的是相干解调法,调制信号与想干载波相乘,经过低通滤波器,再抽样判决得到原信号。通过产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号,然后通过低通滤波器滤波器再抽样判决,得出解调后的原始信号。

线性分组码编码的分析与实现

课程设计任务书 2011—2012学年第一学期 专业:通信工程学号:080110501 姓名:李琼 课程设计名称:信息论与编码课程设计 设计题目:线性分组码编码的分析与实现 完成期限:自2011 年12 月19 日至2011 年12 月25 日共 1 周一.设计目的 1、深刻理解信道编码的基本思想与目的; 2、理解线性分组码的基本原理与编码过程; 3、提高综合运用所学理论知识独立分析和解决问题的能力; 4、使用MATLAB或其他语言进行编程。 二.设计内容 给定消息组M及生成矩阵G,编程求解其线性分组码码字。 三.设计要求 编写的函数要有通用性。 四.设计条件 计算机、MATLAB或其他语言环境 五.参考资料 [1]曹雪虹,张宗橙.信息论与编码.北京:清华大学出版社,2007. [2]王慧琴.数字图像处理.北京:北京邮电大学出版社,2007. 指导教师(签字):教研室主任(签字): 批准日期:年月日

该系统是(6,3)线性分组码的编码的实现,它可以对输入的三位的信息码进行线性分组码编码。 当接收到的六位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。 关键词:编码;MA TLAB;纠错

1课程描述 0 2 设计原理 (1) 2.1 线性分组码的编码 (1) 2.1.1 生成矩阵 (1) 2.1.2 校验矩阵 (3) 2.2 伴随式与译码 (4) 2.2.1 码的距离及纠检错能力 (4) 2.2.2 伴随式与译码 (4) 3 设计过程 (5) 3.1 编码过程 (5) 3.2 仿真程序 (7) 3.4 结果分析 (11) 总结 (13) 致谢 (14) 参考文献 (15)

线性分组码编码的分析与实现

吉林建筑大学 电气与计算机学院 信息理论与编码课程设计报告 设计题目:线性分组码编码的分析与实现专业班级:电子信息工程121 学生姓名: 学号: 指导教师: 设计时间:2016.1.11-2016.1.22

第1章概述 1.1设计的作用、目的 《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。 通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。 1.2设计任务及要求 线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。 通过设计一组(7,3)线性分组码,来完成对任意序列的编码,根据生成矩阵形成监督矩阵,得到伴随式下,并根据其进行译码,同时验证工作的正确性,最基本的是要具备对输入的信息码进行编码,让它具有抗干扰的能力。 1. 理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法; 2. 掌握哈夫曼编码/费诺编码方法的基本步骤及优缺点; 3. 深刻理解信道编码思想与目的,理解线性分组码的基本原理与编码过程。 4. 能够使用MATLAB或其他语言进行编程,编写的函数要有通用性。1.3设计内容 已知一个(7,3)线性分组码的校验元与信息元有如下限定关系。设码字为 (c6 ,c5 , c4 , c3 , c2 , c1 , c0)。 ? ? ? ? ? ? ? ⊕ = ⊕ = ⊕ ⊕ = ⊕ = 2 1 6 1 5 2 1 4 2 3 c c c c c c c c c c c c c 求出标准校验矩阵、Q矩阵、标准生成矩阵,完成对任意信息序列(23个 许用码字)的编码。 当接收码字分别为(0000000),(0000001),(0000010),(0000100),(0001000), (0010000),(0100000),(1000000),(0100100)时,写出其伴随式S,以表格形式写出伴随式与错误图样E的对应关系,纠错并正确译码,当有两位错码时,假定为c5位和c2位发生错误。

线性分组码的编码与译码

· 实践教学 · 大学 计算机与通信学院 2014年秋季学期 计算机通信课程设计 题目:线性分组码(9,4)码的编译码仿真设计

专业班级:姓名:学号:指导教师:成绩:

摘要 该系统是(9,4)线性分组码的编码和译码的实现,它可以对输入的四位的信息码进行线性分组码编码,对于接收到的九位码字可以进行译码,从而译出四位信息码。 当接收到的九位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。 关键词:编码; 译码; 纠错

目录 摘要 (1) 目录 (2) 1. 信道编码概述 (2) 1.1信道模型 (2) 1.2 抗干扰信道编码定理及逆定理 (3) 1.3 检错与纠错的基本原理 (4) 1.4 限失真编码定理 (5) 2.线性分组码的编码 (6) 2.1 生成矩阵 (6) 2.2 校验矩阵 (9) 2.3 伴随式与译码 (10) 3. 线性分组码编码的Matlab仿真 (12) 3.1 程序流程图 (12) 3.2 程序执行结果 (12) 3.2 线性分组码译码的Matlab仿真 (13) 3.3结果分析 (15) 参考文献 (16) 总结 (17) 致谢 (18) 附录 (19)

前言 由于计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象,人们对数据传输和存储系统的可靠性提出来了越来越高的要求,经过长时间的努力,通过编译码来控制差错、提高可靠性的方式在信道传输中得到了大量的使用和发展,并形成了一门新的技术叫做纠错编码技术,纠错编码按其码字结构形式和对信息序列处理方式的不同分为两大类:分组码和卷积码。 目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。 对线性分组码的讨论都在有限域GF(2)上进行,域中元素为{0,1},域中元素计算为模二加法和模二乘法。分组码是一组固定长度的码组,可表示为(n , k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。 对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k

线性分组码编码的分析与实现课程设计说明书

摘要 该系统是(6,3)线性分组码的编码和译码的实现,它可以对输入的三位的信息码进行线性分组码编码,对于接收到的六位码字可以进行译码,从而译出三位信息码。 当接收到的六位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。 关键词:编码; 译码; 纠错

目录 1 课题描述 (1) 2 设计原理 (4) 2.1MATLAB概述 (5) 2.2 线性分组码的编码 (5) 2.2.1 生成矩阵 (5) 2.2.2 校验矩阵 (8) 2.3 伴随式与译码 (9) 2.3.1 码的距离及纠检错能力 (9) 2.3.2 伴随式与译码 (9) 3 设计过程 (10) 3.1 编码过程 (10) 3.2 译码过程 (11) 4 仿真程序及结果分析 (14) 4.1 仿真程序 (14) 4.2 仿真结果 (16) 4.3 结果分析 (18) 总结 (19) 参考文献 (20)

1课题描述 近年来,随着计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,人们对数据传输和存储系统的可靠性提出了越来越高的要求。因此,如何控制差错、提高数据传输和存储的可靠性,成为现代数字通信系统设计的重要课题。 目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。 对线性分组码的讨论都在有限域GF(2)上进行,域中元素为{0,1},域中元素计算为模二加法和模二乘法。分组码是一组固定长度的码组,可表示为(n , k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。 对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k

基于MATLAB的循环码实验报告

课程名称:信息论与编码 课程设计题目:循环码的编码和译码程序设计 指导教师: 系别:专业: 学号:姓名: 合作者 完成时间: 成绩:评阅人: 一、实验目的:

1、通过实验了解循环码的工作原理。 2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理 1、RS 循环码编译码原理与特点 设C 使某线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021Λ,它的循环 移位),,,(1032) 1(---=n n n c c c c C Λ也属于C ,则称该 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个 线性码具有以下的属性,则称为循环码:如果n 元组} ,,,{110-=n c c c c Λ是子空间S 的一个码字,则经过循环移位得到的},,,{201) 1(--=n n c c c c Λ也同样是S 中的一个 码字;或者,一般来说,经过j 次循环移位后得到的},,,,,,,{11011) (---+--=j n n j n j n j c c c c c c c ΛΛ也是 S 中的一个码字。 RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。 码长:12-=m n 信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d 最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1 循环码特点有: 1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。 2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变

(6-3)线性分组码编码分析与实现

吉林建筑大学 电气与电子信息工程学院 信息理论与编码课程设计报告 设计题目:线性分组码编码的分析与实现 专业班级:电子信息工程 学生姓名: 学号: 指导教师: 设计时间: 2014.11.24-2014.12.5

1.1 第1章 概述 1.1 设计的作用、目的 《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。 通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。 1.2 设计任务及要求 设计一个(6, 3)线性分组码的编译码程序:完成对任意序列的编码,根据生成矩阵形成监督矩阵,得到伴随式,并根据其进行译码,同时验证工作的正确性。 1.理解信道编码的理论基础,掌握信道编码的基本方法; 2.掌握生成矩阵和一致校验矩阵的作用和求解方法; 3.针对线性分组码分析其纠错能力,并能够对线性分组码进行译码; 4.能够使用MATLAB 或其他语言进行编程,实现编码及纠错,编写的函数要有通用性。 1.3设计内容 已知一个(6,3)线性分组码的Q 矩阵:设码字为(c 5, c 4, c 3, c 2, c 1, c 0) 011101110Q ?? ??=?? ???? 求出标准生成矩阵和标准校验矩阵,完成对任意信息序列(23个许用码字)的编码。 当接收码字R 分别为(000000), (000001), (000010), (000100), (001000), (010000), (100000), (100100)时,写出其伴随式S ,以表格形式写出伴随式与错误图样E 的对应关系。纠错并正确译码,当有两位错码时,假定c 5位和c 2位发生错误。

线性分组码-习题

1. 已知一个(5, 3)线性码C 的生成矩阵为: 11001G 0 11010 1 11?? ??=?????? (1)求系统生成矩阵; (2)列出C 的信息位与系统码字的映射关系; (3)求其最小Hamming 距离,并说明其检错、纠错能力; (4)求校验矩阵H ; (5)列出译码表,求收到r =11101时的译码步骤与译码结果。 解: (1)线性码C 的生成矩阵经如下行变换: 23132110011 00110110101101001110 0111100111 001101101010100011100111???? ??????????→??? ????????? ??????????????→??? ????????? 将第、加到第行 将第加到第行 得到线性码C 的系统生成矩阵为 ?? ?? ??????=111000*********S G (2)码字),,,(110-=n c c c c 的编码函数为 [][][]111000*********)(210m m m m f c ++== 生成了的8个码字如下 (3) 最小汉明距离d =2,所以可检1个错,但不能纠错。

(4) 由],[],,[)()(k n T k n k k n k k n I A H A I G --?-?-==,得校验矩阵 ?? ????=1010101111H (5) 消息序列m =000,001,010,011,100,101,110,111,由c =mGs 得码字序列 c 0=00000, c 1=00111,c 2=01010, c 3=01101, c 4=10011, c 5=10100,c 6=11001, c 7=11110 则译码表如下: 当接收到r =(11101)时,查找码表发现它所在的列的子集头为(01101),所以将它译为c =01101。 2.设(7, 3)线性码的生成矩阵如下 010101000101111001101G ?? ??=?? ???? (1)求系统生成矩阵; (2)求校验矩阵; (3)求最小汉明距离; (4)列出伴随式表。 解: (1)生成矩阵G 经如下行变换 13 23 01010101 0011010010111001011110011010 10101010011011 0011010010111010101001010100010111???? ????????→??? ????????? ?????????????→??? ????????? 交换第、行交换第、行 得到系统生成矩阵: 100110101010100010111S G ?? ??=?? ???? (2)由],[],,[)()(k n T k n k k n k k n I A H A I G --?-?-==,得校验矩阵为

基于matlab线性分组码实验设计

重庆交通大学 信息论与编码综合设计实验报告 班级:_________________ 级 ______ 班姓名:_____________________________ 学号:_____________________________ 实验项目名称:线性分组码编译码实验 实验项目性质: _______ 设计性实验_________ 实验所属课程:信息论与编码理论 实验室(中心):___ 网络实验中心________ 指导教师: _________________________________ 实验完成时间: __________ 年 _____ 月 _____ 日

一、设计题目 线性分组码编译码实验 二、实验目的: 1.掌握线性分组码的编码原理、编码步骤和译码方法 2.熟悉matlab软件的基本操作,学会用matlab软件进行线性分组码的编码和译码 三、实验主要内容及要求: 设计(15,11)或(255, 247)线性分组码,利用随机生成的二进制序列及BPSK调制方式,比较使用信道编码与未使用信道编码的误比特率曲线 四、实验设备及软件: PC机一台、Matlab软件 该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号① 采用线性

分组码编码和译码,编号②为不采用信道编译码,通过这两种方法的对比,得出误码率曲线。 1.线性分组码编码 本实验采用的是 (15,11)的线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(4X11 )的矩阵,由监督方程和(4X4) 的单位矩阵构成,生成矩阵G为(11X15)的矩阵,由(11X11)的单位矩阵和监督矩阵的转置矩阵构成。 具体实现方法如下: ①将要编码的序列先整形,整为11 列 ②如果序列不能被11 整除在后边补0 使其能被11 整除 ③将整形后的序列与生成矩阵G相乘即得到编码后的码字其实现代码如下: function [n,C]=xxbm(n) a=randint(1,n); % 生成01 随机序列 disp(' 编码序列:'); disp(a); subplot(3,2,1); stairs(a); axis([1 length(a) -0.5 1.5]) title(' 编码序列'); %判断生成的随机序列个数是否是11 的整数倍 if length(a)/11==fix(length(a)/11) % 随机序列个数是11 的整数倍,直接编码b=reshape(a,11,(length(a)/11)); M=b'; F=eye(11); S=[0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1]; K=eye(4); G=[F,S]; H=[S',K];

基于matlab线性分组码实验设计

一、 设计题目 线性分组码编译码实验 二、 实验目的: 1. 掌握线性分组码的编码原理、编码步骤和译码方法 2. 熟悉matlab 软件的基本操作,学会用matlab 软件进行线性分组码的编 码和译码 三、 实验主要内容及要求: 设计(15,11)或(255,247)线性分组码,利用随机生成的二进制序 列及BPSK 调制方式,比较使用信道编码与未使用信道编码的误比特率曲线 四、 实验设备及软件: PC 机一台、Matlab 软件 五、 设计方案 ① (15,11)线性分 ② ① ② 该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号①采用线性分组码编码和译码,编号②为不采用信道编译码,通过这两种方法的对比,得出误码率曲线。 1. 线性分组码编码 本实验采用的是(15,11)的线性分组码,线性分组码的编码由监督矩阵 信源编码 信道编码 BPSK 调制 信道传输 噪声 解调 信道译码 信源译码 统计误码率

和生成矩阵实现,监督矩阵H为(4×11)的矩阵,由监督方程和(4×4)的单位矩阵构成,生成矩阵G为(11×15)的矩阵,由(11×11)的单位矩阵和监督矩阵的转置矩阵构成。具体实现方法如下: ①将要编码的序列先整形,整为11列 ②如果序列不能被11整除在后边补0使其能被11整除 ③将整形后的序列与生成矩阵G相乘即得到编码后的码字 其实现代码如下: function [n,C]=xxbm(n) a=randint(1,n); %生成01随机序列 disp('编码序列:'); disp(a); subplot(3,2,1); stairs(a); axis([1 length(a) -0.5 1.5]) title('编码序列'); %判断生成的随机序列个数是否是11的整数倍 if length(a)/11==fix(length(a)/11) %随机序列个数是11的整数倍,直接编码 b=reshape(a,11,(length(a)/11)); M=b'; F=eye(11); S=[0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1]; K=eye(4); G=[F,S]; H=[S',K]; C=rem(M*G,2); disp('生成矩阵G:');

基于MATLAB的线性分组码编译码仿真实现设计说明书

信息工程学院通信工程系 设计题目:基于MATLAB的线性分组码 编译码仿真设计 班级:10通信班 学号: 姓名: 指导老师: 2013 年11 月15 日 成绩:

摘要 该系统是(6,3)线性分组码的编码和译码的实现,它可以对输入的三位的信息码进行线性分组码编码,对于接收到的六位码字可以进行译码,从而译出三位信息码。 当接收到的六位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。 关键词:编码; 译码; 纠错

目录 前言 (2) 第1章设计目标 (2) 第2章 MATLAB简介 (3) 第3章基本原理 (3) 3.1 线性分组码的编码 (3) 3.1.1 生成矩阵 (3) 3.1.2 校验矩阵 (5) 3.2 伴随式与译码 (6) 3.2.1 码的距离及纠检错能力 (6) 3.2.2 伴随式与译码 (6) 第4章推导过程 (7) 4.1 编码过程 (7) 4.2 译码过程 (9) 第5章仿真程序及结果分析 (11) 5.1 仿真程序 (11) 5.2 仿真结果图 (13) 5.3 结果分析 (15) 参考文献 (16) 总结 (17)

前言 近年来,随着计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,人们对数据传输和存储系统的可靠性提出了越来越高的要求。因此,如何控制差错、提高数据传输和存储的可靠性,成为现代数字通信系统设计的重要课题。 目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。 对线性分组码的讨论都在有限域GF(2)上进行,域中元素为{0,1},域中元素计算为模二加法和模二乘法。分组码是一组固定长度的码组,可表示为(n , k ),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k 个信息位被编为n 位码组长度,而n-k 个监督位的作用就是实现检错与纠错。 对于长度为n 的二进制线性分组码,它有种2n 可能的码组,从2n 种码组中,可以选择M=2k 个码组(k

线性分组码的matlab实现

重庆交通大学信息科学与工程学院综合性设计性实验报告 专业:通信工程专业12级 学号:631206040105 姓名:刘志坤 实验所属课程:信息论与编码 实验室(中心):软件与通信实验中心 指导教师:黄大荣 2015年4月

线性分组码的matlab 实现 一、实验目的和要求。 信道编码的目的是为了改善通信系统的传输质量。按照监督码元与信息码元之间的关系,有线性码和非线性码。线性码的特点是监督码元与信息码元之间有线性关系,可用一组线性代数方程将其联系起来。 本实验用Matlab 语言编程实现线性分组码。 二、实验原理。 线性分组码的编码包括两个基本步骤:首先将信源的输出序列分为k 位一组的消息组(也称信息组,简称消息或信息);然后信道编码器按照一定的编码规则将k 位消息变换为n 个码元的码字。一个(n,k)线性分组码,如果码的数域为GF(m),即每一个码元可能有m 种取值,则信源可发出k m 种不同的消息。对于(n,k)码,n 表示码长,k 表示信息码元的维数,也就是子空间的维数,设M=[m 1,m 2,…,m k ]是输入纠错码编码器的信息,则由纠错码编码器输出的码字 C=MG G 为该(n,k)码的生成矩阵。 如果只考虑信道编码,则纠错码通信系统模型可归结为如下模型: 教师评阅意见: 签名: 年 月 日 实验成绩: 信源 纠错编码器 信道 纠错译码器 信宿 干扰

线性分组码(n ,k )中许用码字(组)为2k 个。定义线性分组码的加法为模二加法,乘法为二进制乘法。即1+1=0、1+0=1、0+1=1、0+0=0;1×1=1、1×0=0、0×0=0、0×1=0。且码字与码字的运算在各个相应比特位上符合上述二进制加法运算规则。 线性分组码具有如下性质(n ,k )的性质: 1、封闭性。任意两个码组的和还是许用的码组。 2、码的最小距离等于非零码的最小码重。 对于码组长度为n 、信息码元为k 位、监督码元为r =n -k 位的分组码,常记作(n ,k )码,如果满足2r -1≥n ,则有可能构造出纠正一位或一位以上错误的线性码。 由于每个码字都是一个二进制的n 重,及二进制n 维线性空间Vn 中的一个矢量,因此码字又称为码矢。线性分组码的一个重要参数是码率r=k/n,它说明在一个码字中信息位所占的比重,r 越大,说明信息位所占比重越大,码的传输信息的有效性越高。由于(n,k)线性分组,线性分组码的2k 个码字组成了n 维线性空间Vn 的一个K 维子空间。因此这2k 个码字完全可由k 个线性无关的矢量所组成。 对于分组码,有着以下结论: 1.检测e 个错码,则要求最小码距1min +≥e d ; 2.纠正t 个错码,则要求最小码距12min +≥t d ; 3.纠正t 个错码,同时检测e(e>t)个错码,则要求最小码距1min ++≥t e d ; 4.纠正t 个错码和p 个删除,则要求最小码距12min ++≥p t d 三、实验步骤 本次试验用Matlab 语言编程实现(10,4)线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H 为(4×4)的矩阵,由监督方程得出,生成矩阵G 为已定义(10×4)的矩阵。具体实现方法如下: ①将要编码的序列先整形,整为4列 ②如果序列不能被4整除在后边补0使其能被4整除 ③将整形后的序列与生成矩阵G 相乘即得到编码后的码字 利用Matlab 函数找出所得分组码的最小距离。 四、程序代码: 1.(7,4)分组码 clear all ; clc; G2 =[1 0 0 0 1 0 1; 0 1 0 0 1 1 1; 0 0 1 0 1 1 0; 0 0 0 1 0 1 1];%生成矩阵 MSG=[0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1;0 1 0 0;0 1 0 1;0 1 1 0;0 1 1 1; 1 0 0 0;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1];%输入信息

通信原理11章答案

通信原理11章答案 【篇一:通信原理教程+樊昌信+习题答案第十章[1]】.1设有两个码组“0101010”和“1010100”,试给出其检错能力、纠错 能力和同时纠错的能力。 解:两个码组的最小码距为:do=6 由do?e+1,得e=5,即可以检错5位。 由do?2t+1,得t=2,即可以纠错2位。 由do?e+t+1,得e=3,t=2,即可以纠错2位,同时检错3位。 习题10.2设一种编码中共有如下8个码组:表10-1 习题10.3表000000,001110,010101,011011,100011, 101101,110110,111000试求出其最小码距,并给 出其检错能力、纠错能力和同时纠检错的能力。 解:此8个码组的最小码距为:do=3。 由do?e+1,得e=2,即可以检错2位。 由do?2t+1,得t=1,即可以纠错1位。 由do?e+t+1,得e=1,t=1,即可以纠错1位,同时检错 1位。 习题10.3设有一个长度为n=15的汉明码,试问其 监督位r应该等于多少?其码率等于多少?其最小码距 等于多少?试写出其监督位和信息位之间的关系。 解:由n?2r?1,n=15,得r=4,即监督位4位。码率为: kn?r15?411?==。 nn1515用s1s2s3s4表示校正子,正好可以指明15个错码的位置,其关系如表10-1所示。可得监督位和信息位之间的关系式为 a13? a 3 ? a 14 ? ? a12?a11?a10?a9?a8?a?a?a?a?a?a?a?a ?214131211765? ?a1? a14?a13?a10?a9?a7?a6?a4 ? ?a0?a14?a12?a10?a8?a7?a5?a4 最小码距为:do=3。 习题10.4设上题中的汉明码是系统码。试计算出对应于信息位为全“1”的码组。 解:上题的监督矩阵为 ?111111100001000??1?01101010100110h=? ? ?110011011010 010????101010110110001? 则生成矩阵为

实验六 线性分组码的信道编码和译码

1.MATLAB 2. MATLAB 1.256M P4CPU 2.MATLAB 1. K N NK NK N K r=NK52 N=5K=2f

c()=m()G G 30T CH 0T GH H H G : C y 2) e S (5,2) 21 2.1a G b G nk H;c 2a G b G nk H

c S d e e c=y+e 1. 2.G 3.G 1. 2. close all; clc; G=input('G, :G=[10111;01101]\n G='); G; [k,n]=size(G); r=n-k; m=input('m, m=[00011011]\n m='); l=length(m); if(mod(l,k)) disp(''); else ge=l/k; temp1=[]; for i=1:ge temp1(i,:)=m(k*(i-1)+1:i*k); end m=temp1; c=mod(m*G,2); A=G(:,k+1:n);H=[A',eye(r)]; disp(''); H disp(''); c end disp(''); pause y=input('y,:y=[00 00001101101111001 0]\n y='); temp2=[]; for i=1:ge temp2(i,:)=y(1,n*(i-1)+1:i*n); end y=temp2 s=mod(y*H',2); e=s*pinv(H'); for i=1:ge for j=1:n if(e(i,j)>0.5-eps) e(i,j)=1;

通信原理教程+樊昌信+习题答案第十章[1]

第十章习题 习题10.1设有两个码组“0101010”和“1010100”,试给出其检错能力、纠错能力和同时纠错的能力。 解:两个码组的最小码距为:o d =6 由o d ≥e+1,得e=5,即可以检错5位。 由o d ≥2t+1,得t=2,即可以纠错2位。 由o d ≥e+t+1,得e=3,t=2,即可以纠错2位,同时检错3位。 习题10.2设一种编码中共有如下8个码组: 表10-1 习题10.3表 000000,001110,010101,011011,100011, 101101,110110,111000试求出其最小码距,并给出其检错能力、纠错能力和同时纠检错的能力。 解:此8个码组的最小码距为:o d =3。 由o d ≥e+1,得e=2,即可以检错2位。 由o d ≥2t+1,得t=1,即可以纠错1位。 由o d ≥e+t+1,得e=1,t=1,即可以纠错1位,同时检错1位。 习题10.3设有一个长度为n =15的汉明码,试问其监督位r 应该等于多少?其码率等于多少?其最小码距等于多少?试写出其监督位和信息位之间的关系。 解:由21=-r n ,n =15,得r =4,即监督位4位。 码率为: -=k n r n n =15415-=11 15 。 用1234S S S S 表示校正子,正好可以指明15个错码的位置,其关系如表10-1所示。 可得监督位和信息位之间的关系式为 最小码距为:o d =3。 习题10.4设上题中的汉明码是系统码。试计算出对应于信息位为全“1”的码组。 ???????++++++=++++++=++++++=++++++=4 5781012140467910131415671112131428 910111213143a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a

相关文档
最新文档