实验五汉明码的编译码_第1页
实验五汉明码的编译码_第2页
实验五汉明码的编译码_第3页
实验五汉明码的编译码_第4页
实验五汉明码的编译码_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据通信原理实验报告irJ实验题目:汉明码的编译码专业班级:信息工程2班姓名学号:赵星敏201342351李明阳201342300指导教师:刘饪实验五汉明码的编译码一、实验目的1、理解汉明码的编码原理2、掌握利用simulink进行汉明码编译码仿真的方法3、掌握利用mat lab指令进行汉明码编译码的方法二、实验原理在数字通信系统中,为了实现信息的可靠传输,需要采用差错控制来发现并 纠正错误。进行差错控制的方法就是对信息进行差错控制编码,差错控制编码种 类较多,其中线性分组码是常用的一类编码,具有编码效率高,实现较简单以及检 纠错能力较强等特点。一般数字通信系统模型山信源信宿、加解密、编解码、

2、调制解调等模块组成, 其中有些通信模块是组成整个通信系统所必不可少的,有些模块是可以不需要 的。差错控制编解码属于编解码器通信模块,为了方便分析差错控制编码性能, 通过将通信系统简化为如图5-1所示的信息传输系统来搭建仿真实验平台进行分析研究。差错控制解码器一信宿图5-1编码,有时也称为纠错编码。不同的编码方法,有不同的检错或纠错能力, 有的编码只能检错,不能纠错。一般说来,付出的代价越大,检纠错的能力就越 强。在选择差错控制编码时需要考虑到编码效率、检纠错的能力等方面因素的影 响。按照是否将信息码元进行分组可以将差错控制编码分为分组码和非分组码, 线性码是指信息位和监督位满足一组线性方程的码

3、,任一 (n, k)线性分组码的编 码效率为k/no Simulink通信模块中提供了二进制线性分组码编解码器:Binary Linear Encoder 和 Binary Linear Decoder。汉明码是汉明(Hamming)于1950年提出的能纠正一位错码且编码效率较高 的线性分组码,它可以用一种简洁有效的方法进行解码。汉明码不是仅指某一种 码,而是指一类码。二进制汉明码应满足条件:2%l+n,令m=n-k,汉明码n和k 服从关系式:码长n二2=-1;信息位k=2-l-m;最小距离dmin二3(指汉明距离)。当 nr3,4,5,6,7, &时,分别有(7,4), (15, 11),

4、(31,26), (63, 57), (127, 120), (255, 247),汉明码。汉明码的基本思想:在k个信息位上加r个校验位,构成n二k+r位的码字, 其中每个校验位和某儿个特定的信息位构成偶校验的关系。接收端对这r个偶关 系进行校验,即将每个校验位与它关联的信息位进行异或加,相异或的结果称为 校正因子。如果没有错的话,这r个校正因子都为0:如果有一个错则校正因子 不会全为0,根据校正因子的不同取值,可以知道错误发生在码字的哪一个位置 上。线性分组码的生成原理与Hamming码基本一致,下面以(7, 4)Hamming码为 例简单地介绍一下汉明码的构造过程。构造一个4)汉明码,就是

5、求出它的生成矩阵,或等效地,求出它的监督 矩阵(也叫校验矩阵)。山于(7, 4)汉明码的校验矩阵是矩阵,而监督矩阵的列矢 量不能为全零(零与任何码元的乘积为零,失去检验功能),因此监督矩阵H的7 个列矢量正好是除全零矢量外3重矢量的全部可能组合。将001 010 011 100 101 110 1111排列起来就是监督矩阵,排列顺序不同, 所得矩阵也就不同,说明H不是唯一的。山于交换列不会影响最小距离,所以可 以通过列置换将最初的H变换为系统形式的H (若信息组以不变的形式,在码字的 任意k位中岀现,则称该码为系统码。否则,称为非系统码),成为系统汉明码:0 0 0 111H= 0 110 0

6、 110 10 10 1经过变换,整理为典型监督矩阵形式为0 1111 0o/= 1 0110 10= pi1 10 10 0 1根据校验矩阵与生成矩阵的转换关系式得到系统汉明码的生成矩阵G为:0 0 01 0 00 1 00 0 111010 11 01 11 1这样输入信息组m= m3, m:, mJ,将m与G相乘即得到编码后的码字A。当数字信号编码成汉明码形式后在信道中传输,由于信道中噪声的干扰,可能山于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以 提高通信系统的抗干扰能力及可靠性。解码的时候将接收到的信息组r与Hl相乘,如果rH:=O,接收码组无错;如果rHVO,则

7、根据译码图样进行纠错。Simulink通信模块中提 供 f Hamming 码编解码器:Hamming Encoder 和 Hamming Decoder。三、实验内容1、simulink仿真汉明码编译码过程汉明码编译码仿真的模型图如图5-2所示。图5-2汉明码编译码仿真各模块参数及说明: Bernoulli Binary Generator (伯努利:进制随机数产生器)模块描述:产生服从伯努利分布的随机二进制序列,模块的输出可以是帧结构的 矩阵,也可以是数据流形式的行或列向量或一维数组。模块位置:Communications Blockset-Comm Sources-Random Data

8、 Sources-Bernoulli Binary Generator模块参数:参数说明:Probability of a zero:模块产生的二进制序列中出再0的概率。Initial seed:随机数种子,不同的随机数种子通常产生不同的序列。Sample time:抽样时间,表示输出序列中每个二进制符号的持续时间。此处参 数表示在0. 02秒内产生4个比特。Frame-based outputs:选种表示输出为帧格式,否则输出数据流。Samples per frame:只有Frame-based outputs选种后才可编辑此参数,它表 示输出一帧中包含的抽样点数。此处表示1帧由4个比特组成

9、。 Hamming Encode (汉明码编码器)模块描述:用于对输入信息进行汉明编码,汉明码是一种能够纠正一位错误的红性分组码,码长为。该信息位的长度为K,其中,N二2了-1 (M=3) , K二N-M。模块位置:Communications Blockset-Error Detection and Correction-Block- Hamming Encode模块参数:ParametersCodeword length N:Message Length. K? or M-degree primitive polynomial:F Binary Symmetric Channel ( 进制

10、对称信道)模块描述:用于对二进抽制信号的误比特率性能进行仿真,添加二进制噪声到输 入信号,可以是标量、数据流向量或帧结构的行向量。模块位置:Communications B1 ockset-Channe 1 sBinary Symmetric Channel模块参数:参数说明:Error probab订ity :添加噪声比特的概率。 Hamming Decode (汉明码译码器)模块描述:创建一个码长为N,信息码长为K的汉明码。其中,N=2X-1 (M=3), K=X-Mo模块位置:Communications Blockset-Error Det ection and Correct ion

11、-Block- Hamming Decode模块参数:此处的两个参数要与前面的Hamming Encode参数一致。ParametersCodeword length N:Message Length. K? or Mdegree primitive polynomial:F Error Rate Calculation (误码率计算)模块描述:通过比较传输数据和接收数据来计算误码率,模块的输出数据是长度 为3的向量,其中每个元素的意义分别是:误码率或误比物率、总的错误个数、 总的参加比较的符号或比特数。模块位置:Communications Blockset-Comm Sinks-Error

12、 Rate Calculation 模块参数:参数说明:Receive delay:指定接收方滞后发送的抽样点数,即接收的第儿个值对应发送的 第一个值。Comput at ion delay:指定开始比较时模块忽略的抽样点数。Computation mode:指定模块是比较全部还是输入数据。Output data:指定计算结果是输出到工作区还是端口。 To Workspace (输出到工作区)模块描述:写入专门的数据到MATLAB的主工作区。数据不可用直到仿真结束或 暂停。模块位置:Simulink -SinksTo Workspace模块参数:参数说明:Variable name:写入工作区

13、间的数据名称,默认为simoutoLimit data points to last:模块最多可以保留的数据个数,inf表示无穷大。Decimation:写入数据的抽样频率,即每隔多少抽样点输入一个值。Sample time:写入数据的抽样时间,默认值为-1,表示与上一模块抽样时间相同。 Save format:输出数据的形式。 Display (显示仿真结果)模块描述:显示结果模块位置:Simulink -Sinks-Display模块参数:ParametersFgmt: | shortDecimation:I1l Fl o=aii spl aySample 七im电 C1 for inhe

14、rited.) !IF参数说明:Format:显示在模块对话框上的数据形式,short显示小数据点后5位数字。2、利用mat lab语句进行汉明码编译码MATLAB中提供了汉明码的编码和译码函数,本程序直接调用进行编程。将用到的程序函数说明如下:encode函数功能:编码函数语法:code=encode (msg, N, K, hamming * )说明:该函数对二进制信息msg进行汉明编码,K为信息位长度,N为码字长度。 msg是一个任意行K列的矩阵。比如: code二encode(1 0 0 0;1 1 0 1,7,4,J1lamming)运行结果为:code =110 10000 0 0

15、 1 101decode函数功能:译码函数语法:rcvcode=decode(code, N, K, hamming* )说明:该函数对接受码字进行译码,恢复出原始信息,译码参数及方式必须和编 码时釆用的完全相同。比如,在结果的基础上: rcvcode二decode(code, 7, 4, hamming,)运行结果为:rcvcode =10 0 0110 1randint函数功能:产生一个均匀分布的维的整数矩阵,矩阵的元素是随机的。语法:randint (m, n)说明:randint (m, n),矩阵中的元素或者是0或者是1, 0或者1的出现是随机的。比如: randint(3, 2)运

16、行结果为:ans =000101语法:randint (m, n, range)说明:产生一个m*n的随机矩阵,矩阵元素值的范Rllllrange确定。比如range设 定为一个区间:randint (2, 3, 1 6),就是产生一个2*3随机矩阵,这个矩阵的 元素是区间1 6的随机整数。比如: randint(3, 2, 1 2)运行结果为:ans =211212rem函数功能:求余数语法:R二rem(X,Y),求X除以Y的余数,X,Y应该为正数。当Y为2时,相当于模二 运算。randerr 函数功能:产生比特误差样本语法:randerr (A, B)说明:产生A行B列的随机误差样本矩阵比

17、如: randerr(3, 2)运行结果为:ans =011001说明:计算A、B两个矩阵中的误比特数,返回给num,讣算误码率返回ratbiterr函数功能:计算误比特数和误比特率语法:num, rat =biterr (A, B)说明:计算A、B两个矩阵中的误比特数,返回给num,计算误码率返回wt参考matlab编译码的指令代码为:K二 4;N二 7;row_num=20;msg=randint (row_num, 4) %信息产生 产生row_num行4列的二进制随机矩阵,r ow_num表示要对r ow_num组信息数进行编码code二encode (msg, N, K, hammi

18、ng) %(7, 4)汉明编码,输出为3行7列的已编码矩 阵nois=randerr(row_num, N)code_noise=rem(code(:, :)+nois(:, :),2) %编码后进入有噪信道,则加上噪声(3行7列的随机数)rem运算相当于取了模二和code(:, :)+nois(:,:)表示两 个二维矩阵求和rev 二 decode (code_noise, N, K, hamming) %汉明译码num, rat =biterr (rev, msg) %比较编码询和译码后矩阵,计算误码率运行指令的方法:1、直接在mat lab的command window窗1下输入上述语句。2、在matlab主界面下,新建一个空白文档,输入以下命令行,然后保

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论