基于MATLAB的(7_4)汉明码编译码设计与仿真结果分析(DOC)

合集下载

(7,4)汉明码编译码系统设计.doc

(7,4)汉明码编译码系统设计.doc

南华大学电气工程学院《通信原理课程设计》任务书设计题目:(7, 4)汉明码编译码系统设计专业:通信工程学生姓名: 马勇学号:20114400236 起迄日期:2013 年12月20日~2014年1月3日指导教师:宁志刚副教授系主任:王彦教授《通信原理课程设计》任务书《通信原理课程设计》设计说明书格式一、纸张和页面要求A4纸打印;页边距要求如下:页边距上下各为2.5 厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。

二、说明书装订页码顺序(1)任务书 (2)论文正文 (3)参考文献,(4)附录三、课程设计说明书撰写格式见范例引言(黑体四号)☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(首行缩进两个字,宋体小四号)1☆☆☆☆(黑体四号)正文……(首行缩进两个字,宋体小四号)1.1(空一格)☆☆☆☆☆☆(黑体小四号)正文……(首行缩进两个字,宋体小四号)1.2 ☆☆☆☆☆☆、☆☆☆正文……(首行缩进两个字,宋体小四号)2 ☆☆☆☆☆☆ (黑体四号)正文……(首行缩进两个字,宋体小四号)2.1 ☆☆☆☆、☆☆☆☆☆☆,☆☆☆(黑体小四号)正文……(首行缩进两个字,宋体小四号)2.1.1☆☆☆,☆☆☆☆☆,☆☆☆☆(楷体小四号)正文……(首行缩进两个字,宋体小四号)(1)……图1. 工作波形示意图(图题,居中,宋体五号)…………5结论(黑体四号)☆☆☆☆☆☆(首行缩进两个字,宋体小四号)参考文献(黑体四号、顶格)参考文献要另起一页,一律放在正文后,不得放在各章之后。

只列出作者直接阅读过或在正文中被引用过的文献资料,作者只写到第三位,余者写“等”,英文作者超过3人写“et al”。

几种主要参考文献著录表的格式为:⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起~止页码.⑵期刊:[序号]著者.篇名[J].刊名,年,卷号(期号):起~止页码.⑶论文集:[序号]著者.篇名[A]编者.论文集名[C] .出版地:出版者,出版者. 出版年:起~止页码.⑷学位论文:[序号]著者.题名[D] .保存地:保存单位,授予年.⑸专利文献:专利所有者.专利题名[P] .专利国别:专利号,出版日期.⑹标准文献:[序号]标准代号标准顺序号—发布年,标准名称[S] .⑺报纸:责任者.文献题名[N].报纸名,年—月—日(版次).附录(居中,黑体四号)☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(首行缩进两个字,宋体小四号)(另起一页。

二元(7,4)汉明码的编译码分析与实验研究

二元(7,4)汉明码的编译码分析与实验研究

设计(论文)题目:二元(7,4)汉明码的编译码分析与实验研究摘要汉明码(Hamming Code)在电信领域内属于线性分组码,或者可以称为线性调试码。

它是以发明者理查德·卫斯里·汉明的名字命名的。

汉明码在传输信息序列时插入校验码,当计算机存储或传输数据时,或者在信道传输的过程中,可能会产生误码,即信息错位,以检测并纠正一个比特错误。

由于汉明编码简单,它们被广泛应用于实际传输中。

本文主要涉及二元(7,4)汉明码的编码、译码及实现,以及信息论与编码的相关知识。

对于二元(7,4)汉明码C,其校验矩阵为H,汉明距离d(C)=3的充要条件是校验矩阵H的任意2个列矢量线性无关,且任意3个列向量是线性相关。

监督矩阵H生成的码是(7,4,3)码。

所以接下来问题是构建监督矩阵H和生成矩阵G,找出编码器和译码器输入和输出对应的逻辑关系,画出汉明码的编码电路图和译码电路图,通过VHDL语言实现汉明码的编码过程和译码过程,观察仿真波形,来观察实验结果。

关键字:二元(7,4)汉明码;生成矩阵;监督矩阵;编码;译码;AbstractHamming code field belongs to the linear block codes in the telecommunications, or you could be called linear debugging code. It is the inventor, Richard Wesley Hamming named after. Hamming code inserted into the check code in information transmission sequence, when the computer refers for data storage,or in the process of channel transmission. it may produce error, namely the informational burst-error, and Hamming Code could detect and correct errors one bit. Due to its simple hamming coding, they are widely used in the actual transmission.This paper mainly relates to binary (7, 4) hamming code about coding, decoding and realization, as well as the related knowledge of Information Theory and Coding. For binary (7, 4) hamming code called C, its supervision matrix of the H, hamming distance d (C) = 3 of any two of the sufficient and necessary condition is checking matrix H column vector linearly independent, and arbitrary three column vector is linearly dependent. Supervision of matrix H generated code is (7, 3) code. So the next problem is to build the generator matrix G and supervision matrix H, generate the encoder and decoder ,inputs and outputs corresponding logical relationship, as well as,draw the circuit diagram of hamming code encoding and decoding circuit diagram, using VHDL language realization of hamming code encoding and decoding process, observing the simulation waveform and the result of the experiment.Keywords:binary (7, 4) hamming code ;generator matrix;supervision matrix;encoding ;decoding ;引言汉明码是最早提出来的用于纠错的编码,它是一类可以纠正一位错误的高效的线性分组码。

Hamming(7,4)编译码器实验报告8.8

Hamming(7,4)编译码器实验报告8.8

8.8 Hamming(7,4)编译码器1.1实验目的·加深理解Hamming(7,4)码的编码方法和抗干扰性能;·通过编程实现Hamming(7,4)码的编码算法,进一步掌握按位二进制加法的实现原理。

1.2 实验原理·输入:长度为4的任意二进制序列。

·输出:输入数据经Hamming(7,4)编码器编码之后,通过8.7节的BSC信道(错误概率为0.1)传输后,再经过Hamming(7,4)译码器译码输出得到信宿端的长度为4的二进制序列。

·源程序格式整齐清晰,注释简单明了。

1.3 实验内容1.3.1 算法描述Hamming(7,4)码的生成矩阵为G=1000101 0100110 0010111 0001011⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦其校验矩阵为H=1110100 0111010 1011001⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦1.3.2 实验程序#include<stdio.h>#define M 7#define N 3int fun(int a,int b){if(a==b)return (0);elsereturn (1);}int main(void){int a[M],i,p[N];printf("请输入四位码 m1,m2,m3,m4:");scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);p[0]=fun(fun(a[0],a[1]),a[2]);p[1]=fun(fun(a[0],a[2]),a[3]);p[2]=fun(fun(a[1],a[2]),a[3]);printf("%d%d%d%d%d%d%d\n",a[0],a[1],a[2],a[3],p[0],p[1],p[2]);return 0;}1.3.3 运行结果1.3.4 结果分析·运行结果正确。

基于matlab的(7.4)汉明码编译码仿真.

基于matlab的(7.4)汉明码编译码仿真.
东北大学秦皇岛分校电子信息系
综合课程设计
基于matlab的(7,4汉明码编译仿真
专业名称通信工程
班级学号4090719
学生姓名何云瑞
指导教师李雅珍
设计时间2011.12.19~2012.1.4
课程设计任务书
专业:通信工程学号:409719学生姓名(签名:
设计题目:(7,4汉明码的编码、译码仿真
一、设计实验条件
⎢⎥⎢⎥
⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
⎢⎥⎢⎥⎢⎥⎣⎦ (7
式(6还可以简记为
0T T H A ∙=或0T
A H ∙= (8
其中
111010011010101011001H ⎡⎤
⎢⎥=⎢⎥
⎢⎥⎣⎦ []654321
0A a a a a a a a =
[]00
0=
111011011011P ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦
3.2.3仿真波形(10
3.2.4仿真结果分析(14
4.总结(15
参考文献(16
摘要
汉明码(Hamming Code是一种能够自动检测并纠正一位错码的线性纠错码,即SEC (Single Error Correcting码,用于信道编码与译码中,提高通信系统抗干扰的能力。
本文主要利用MATLAB中SIMULINK通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率与信噪比关系曲线图。在此基础上,对汉明码的性能进行分析,得出结论。
③hammgen函数
功能:汉明码生成矩阵和校验矩阵产生函数
语法:H=hammgen(M
[H,G]=hammgen(M
[H,G,N,K]=hammgen(M

matlab(74)汉明码和(74)循环码的编程设计

matlab(74)汉明码和(74)循环码的编程设计

二、创新实验设计创新实验一:(7,4)汉明码的编码与译码实现1、实验目的实现(7,4)汉明码的编码与译码,通过这次实验不但加深了对汉明码编码和译码原理了解,而且对线性分组码有所了解。

2、实验原理线性分组码的构造方法比较简单、理论较为成熟,应用比较广泛。

汉明码是一种能够纠正一个错码的效率比较高的线性分组码,下面以(7,4)码为例就汉明码的编码与译码分别进行介绍:(1)编码原理一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。

若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求21r n -≥或211rk r -≥++ (1)设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。

若取r=3,则n=k+r=7。

这样就构成了(7,4)码。

用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,则123s s s 的值与错误码元位置的对应关系可以规定如表1所列。

表2.1 校正子和错码位置的关系则由表1可得监督关系式:16542s a a a a =⊕⊕⊕()226531s a a a a =⊕⊕⊕()3 36430s a a a a =⊕⊕⊕()4 在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。

监督位2a 、1a 、0a 应根据信息位的取值按监督关系来确定,为使所编的码中无错码,则123,,S S S 等于0,即65426531643000(5)0a a a a a a a a a a a a ⊕⊕⊕=⎧⎪⊕⊕⊕=⎨⎪⊕⊕⊕=⎩方程组(5)可等效成如下矩阵形式6543210111010001101010010110010a a a a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦(6)式(6)可简化为0T T HA =,H 为监督矩阵,则由式(6)可得到监督矩阵11101001101010=[P I ] (7)1011001r H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦因为生成矩阵'=[I Q]=[I ]k k G P ,所以由(7)得生成矩阵G 如下:[]k 10001110100110[']00101010001011k G I Q I P ⎡⎤⎢⎥⎢⎥===⎢⎥⎢⎥⎣⎦然后利用信息位和生成矩阵G 相乘产生整个码组,即有[][]65432106543=(8)A a a a a a a a a a a a G=其中A 为整个码组矩阵,6543a a a a 是信息位。

(完整word版)matlab(7,4)汉明码和(7,4)循环码的编程设计

(完整word版)matlab(7,4)汉明码和(7,4)循环码的编程设计

二、创新实验设计创新实验一:(7,4)汉明码的编码与译码实现1、实验目的实现(7,4)汉明码的编码与译码,通过这次实验不但加深了对汉明码编码和译码原理了解,而且对线性分组码有所了解。

2、实验原理线性分组码的构造方法比较简单、理论较为成熟,应用比较广泛。

汉明码是一种能够纠正一个错码的效率比较高的线性分组码,下面以(7,4)码为例就汉明码的编码与译码分别进行介绍:(1)编码原理一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。

若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求21r n -≥或211rk r -≥++ (1)设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。

若取r=3,则n=k+r=7。

这样就构成了(7,4)码。

用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,则123s s s 的值与错误码元位置的对应关系可以规定如表1所列。

表2.1 校正子和错码位置的关系则由表1可得监督关系式:16542s a a a a =⊕⊕⊕()226531s a a a a =⊕⊕⊕()3 36430s a a a a =⊕⊕⊕()4 在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。

监督位2a 、1a 、a 应根据信息位的取值按监督关系来确定,为使所编的码中无错码,则123,,S S S 等于0,即65426531643000(5)0a a a a a a a a a a a a ⊕⊕⊕=⎧⎪⊕⊕⊕=⎨⎪⊕⊕⊕=⎩方程组(5)可等效成如下矩阵形式6543210111010001101010010110010a a a a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦(6)式(6)可简化为0T T HA =,H 为监督矩阵,则由式(6)可得到监督矩阵11101001101010=[P I ] (7)1011001r H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦因为生成矩阵'=[I Q]=[I ]k k G P ,所以由(7)得生成矩阵G 如下:[]k 10001110100110[']00101010001011k G I Q I P ⎡⎤⎢⎥⎢⎥===⎢⎥⎢⎥⎣⎦然后利用信息位和生成矩阵G 相乘产生整个码组,即有[][]65432106543=(8)A a a a a a a a a a a a G=其中A 为整个码组矩阵,6543a a a a 是信息位。

基于某matlab地(7,4)汉明码编译仿真

基于某matlab地(7,4)汉明码编译仿真

东北大学分校电子信息系综合课程设计基于matlab的(7,4)汉明码编译仿真专业名称通信工程班级学号4090719学生何云瑞指导教师雅珍设计时间2011.12.19~2012.1.4课程设计任务书专业:通信工程学号:409719 学生(签名):设计题目:(7,4)汉明码的编码、译码仿真一、设计实验条件电子信息创新实验室二、设计任务及要求1.了解、掌握汉明码编码、译码原理;2.用仿真软件对(7.4)汉明码进行编码、译码仿真;3.画出编码后、译码后的信号波形图。

三、设计报告的容1.设计题目与设计任务(设计任务书)2.前言(绪论)(设计的目的、意义等)3.设计主体(各部分设计容、分析、结论等)4.结束语(设计的收获、体会等)5.参考资料四、设计时间与安排1、设计时间:2周2、设计时间安排:熟悉实验设备、收集资料:天设计图纸、实验、计算、程序编写调试:天编写课程设计报告:天答辩:天目录摘要 (I)1.引言 (1)2.设计原理 (2)2.1汉明码编码原理 (2)2.2汉明码纠错原理 (4)3.程序与SIMULINK仿真 (6)3.1程序 (6)3.1.1程序函数介绍 (6)3.1.2 主程序 (6)3.1.3调试结果 (7)3.2 SIMULINK仿真 (8)3.2.1 SIMULINK电路图 (8)3.2.2 模块参数设置 (9)3.2.3仿真波形 (11)3.2.4仿真结果分析 (15)4.总结 (16)参考文献 (17)摘要汉明码(Hamming Code)是一种能够自动检测并纠正一位错码的线性纠错码,即SEC (Single Error Correcting)码,用于信道编码与译码中,提高通信系统抗干扰的能力。

本文主要利用MATLAB中SIMULINK通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数对外界输入的信息进行汉明码的编、译码,绘制时域波形及误码率与信噪比关系曲线图。

在此基础上,对汉明码的性能进行分析,得出汉明码能降低噪声干扰的结论。

(完整版)(7,4)汉明码编译码程序说明

(完整版)(7,4)汉明码编译码程序说明

(7,4)汉明码编译码原理程序说明书1、线性分组码假设信源输出为一系列二进制数字0和1.在分组码中,这些二进制信息序列分成固定长度的消息分组(message blocks )。

每个消息分组记为u ,由k 个信息位组成。

因此共有2k 种不同的消息。

编码器按照一定的规则将输入的消息u 转换为二进制n 维向量v ,这里n>k 。

此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。

因此,对应于2k 种不同的消息,也有2k 种码字。

这2k 个码字的集合就叫一个分组码(block code )。

一个长度为n ,有2k 个码字的分组码,当且仅当其2k 个码字构成域GF (2)上所有n维向量空间的一个k 维子空间时被称为线性(linear )(n ,k )码。

对于线性分组码,希望它具有相应的系统结构(systematic structure ),其码字可分为消息部分和冗余校验部分两个部分。

消息部分由k 个未经改变的原始信息位构成,冗余校验部分则是n-k 个奇偶校验位(parity-check )位,这些位是信息位的线性和(linear sums )。

具有这样的结构的线性分组码被称为线性系统分组码(linear systematic block code )。

本实验以(7,4)汉明码的编译码来具体说明线性系统分组码的特性。

其主要参数如下:码长:21mn =-信息位:21mk m =-- 校验位:m n k =-,且3m ≥ 最小距离:min 03d d ==由于一个(n ,k )的线性码C 是所有二进制n 维向量组成的向量空间n V 的一个k 维子空间,则可以找到k 个线性独立的码字,0,1,1k g g g -…… ,使得C 中的每个码字v 都是这k 个码字的一种线性组合。

(7,4)汉明码的生成矩阵如下,前三位为冗余校验部分,后四位为消息部分。

0123 1 1 0 1 0 0 00 1 1 0 1 0 01 1 1 0 0 1 01 0 1 0 0 0 1g g G g g ⎧⎫⎧⎫⎪⎪⎪⎪⎪⎪⎪⎪==⎨⎬⎨⎬⎪⎪⎪⎪⎪⎪⎪⎪⎩⎭⎩⎭如果()0123u u u u u =是待编码的消息序列,则相应的码字可如下给出:()0101230011223323g g v u G u u u u u g u g u g u g g g ⎧⎫⎪⎪⎪⎪===+++⎨⎬⎪⎪⎪⎪⎩⎭编码结构即码字()0123456v v v v v v v v =,对于(7,4)线性分组码汉明码而言,3456,,,v v v v 为所提供的消息序列,而0356v v v v =⊕⊕,1345v v v v =⊕⊕,2456v v v v =⊕⊕。

基于matlab的(7.4)汉明码编译码仿真.

基于matlab的(7.4)汉明码编译码仿真.
关键词:MATLAB汉明码SIMULINK性能
I
1.引言
MATLAB(Matrix Laboratory,矩阵实验室是Mathwork公司推出的一套高效率的数值计算和可视化软件。其中,MATLAB通信工具箱是一套用于在通信领域进行理论研究、系统开发、分析设计和仿真的专业化工具软件包。MATIAB通信工具箱由两大部分组成:通信系统功能函数库和SIMULINK通信系统仿真模型库。
规定如表1所列。
表1校正子和错码位置的关系
则由表1可得监督关系式: 16542s a a a a =⊕⊕⊕ (2
2653s a a a a =⊕⊕⊕ (3 36430s a a a a =⊕⊕⊕ (4
在发送端编码时,信息位6543a a a a的值决定于输入信号,因此它们是随机的。
监督位2a、1a、0a应根据信息位的取值按监督关系来确定,即监督位应使式(2~式(4中1s、2s、3s的值为0(表示编成的码组中应无错码
1
0001
000
1r I ⎡⎤⎢⎥=⎢
⎥⎢⎥⎣⎦
所以有
[]
r H PI = (9
式(6等价于
[][][]2106
54
3654
3111110101011a a a a a a a a a a a Q
⎡⎤⎢⎥

⎥==⎢⎥⎢⎥⎣⎦
(10
其中Q为P的转置,即
T Q P = (11
式(10表示,信息位给定后,用信息位的行矩阵乘矩阵Q就产生出监督位。我们将Q的左边加上一个k ×k阶单位方阵,就构成一个矩阵G
21r n -≥或211r
k r -≥++ (1
下面以(7,4汉明码为例说明原理:
设汉明码(n,k中k=4,为了纠正一位错码,由式(1可知,要求监督位数r ≥3。若取r=3,则n=k+r=7。我们用6543210a a a a a a a来表示这7个码元,用123s s s的

基于MATLAB的(7,4)汉明码的编译仿真分解

基于MATLAB的(7,4)汉明码的编译仿真分解

摘要在通信系统中,要提高信息传输的有效性,我们将信源的输出经过信源编码用较少的符号来表达信源消息,这些符号的冗余度很小,效率很高,但对噪声干扰的抵抗能力很弱。

汉明码(HammingC ode)是一种能够自动检测并纠正一位错码的线性纠错码,即SE(CSingle Error Correcting )码,用于信道编码与译码中,提高通信系统抗干扰的能力。

为了提高信息传输的准确性,我们引进了差错控制技术。

而该技术采用可靠的,有效的信道编码方法来实现的。

纠错码是一种差错控制技术,目前已广泛应用于各种通信系统和计算机系统中,纠错编码主要用于数字系统的差错控制,对于保证通信、存储、媒体播放和信息转移等数字传递过程的质量有着重要意义,是通信、信息类科知识结构中不可缺少的一部分。

关键字:通信系统、MATLAB线性分组码、Hamming码一、引言 (1)二、设计原理 (2)2.1 汉明码的构造原理 (2)2.2 监督矩阵H (3)2.3 生成矩阵G (4)2.4 校正子(伴随式)S (5)三、(7,4)汉明码编码的设计 (7)3.1 (7,4)汉明码编码方法 (7)3.2 编码流程图 (7)3.3 (7,4)汉明码编码程序设计 (7)四、(7,4)汉明码的译码器的设计 (8)4.1 (7,4)汉明码译码方法 (8)4.2 译码流程图 (10)4.3 (7,4)汉明码译码程序的设计 (10)五、(7,4)汉明码编译码程序的编译及仿真波形 (11)六、总结 (13)七、参考文献 (14)附录 (15)、引言当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,由Bell 实验室的R.W.Hamming发明,因此定名为汉明码。

与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。

利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。

matlab(7-4)汉明码和(7-4)循环码的编程设计

matlab(7-4)汉明码和(7-4)循环码的编程设计

二、创新实验设计创新实验一:(7,4)汉明码的编码与译码实现1、实验目的实现(7,4)汉明码的编码与译码,通过这次实验不但加深了对汉明码编码和译码原理了解,而且对线性分组码有所了解。

2、实验原理线性分组码的构造方法比较简单、理论较为成熟,应用比较广泛。

汉明码是一种能够纠正一个错码的效率比较高的线性分组码,下面以(7,4)码为例就汉明码的编码与译码分别进行介绍:(1)编码原理一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。

若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求21r n -≥或211rk r -≥++ (1)设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。

若取r=3,则n=k+r=7。

这样就构成了(7,4)码。

用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,则123s s s 的值与错误码元位置的对应关系可以规定如表1所列。

表2.1 校正子和错码位置的关系则由表1可得监督关系式:在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。

监督位2a 、1a 、a 应根据信息位的取值按监督关系来确定,为使所编的码中无错码,则123,,S S S 等于0,即 方程组(5)可等效成如下矩阵形式式(6)可简化为0T T HA =,H 为监督矩阵,则由式(6)可得到监督矩阵 因为生成矩阵'=[I Q]=[I ]k k G P ,所以由(7)得生成矩阵G 如下: 然后利用信息位和生成矩阵G 相乘产生整个码组,即有 其中A 为整个码组矩阵,6543a a a a 是信息位。

根据上述原理可以得到(7,4)汉明码的整个码组。

(2)译码与检错、纠错原理当数字信号编码成汉明码后,由于信道噪声的存在,使得经过信道后的汉明码会发生差错,使得接收端接收到错码,因此需要多错码进行纠正,以提高通信系统的抗干扰能力及可靠性。

(完整word版)MATLAB实现汉明码编码译码

(完整word版)MATLAB实现汉明码编码译码

MATLAB 实现汉明码编码译码汉明码的编码就是如何根据信息位数k ,求出纠正一个错误的监督矩阵H ,然后根据H 求出信息位所对应的码字。

1、根据已知的信息位数k ,从汉明不等式中求出校验位数m=n-k ;2、在每个码字C :(C1,C2,⋯ ,C2m -1)中,用c02 ,c12 ,cn-12作为监督位,剩下的位作为信息位;3)用二进制数字表示2m-1 列,得到2m-1列和m 行监督矩阵H ; 4)用3步的H 形成HCT =0,从而得出m 个监督方程;5)将已知的信息代入方程组,然后求出满足上述方程组的监督位c (i=0,1,⋯ ,m 一1)。

例如,用以上方法,很容易求出[7,4,3]汉明码的监督矩阵:及编码所对应的码字为C=011001。

clear m=3; %给定m=3的汉明码[h,g,n,k]=hammgen(m);msg=[0 0 0 1;0 0 0 1;0 0 0 1;0 0 1 1;0 0 1 1;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]; code=encode(msg,n,k,'hamming/binary') %编码C=mod(code*h',2) %对伴随式除2取余数newmsg=decode(code,n,k,'hamming/binary') %解码d_min=min(sum((code(2:2^k,:))')) %最小码距运行结果:>> hangmingcode =1 0 1 0 0 0 11 0 1 0 0 0 11 0 1 0 0 0 10 1 0 0 0 1 10 1 0 0 0 1 11 1 0 0 1 0 11 0 0 0 1 1 00 0 1 0 1 1 1⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=101100111010101110100H1 1 0 1 0 0 00 1 1 1 0 0 10 0 1 1 0 1 01 0 0 1 0 1 11 0 1 1 1 0 00 0 0 1 1 0 10 1 0 1 1 1 01 1 1 1 1 1 1C =0 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0newmsg =0 0 0 10 0 0 10 0 0 10 0 1 10 0 1 10 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1d_min =3clearm=3; %给定m=3的汉明码[h,g,n,k]=hammgen(m);msg=[0 0 0 1;0 0 0 1;0 0 0 1;0 0 1 1;0 0 1 1;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]; code=encode(msg,n,k,'hamming/binary') %编码subplot(121)plot(code)C=mod(code*h',2) %对伴随式除2取余数newmsg=decode(code,n,k,'hamming/binary') %解码subplot(122)plot(newmsg)d_min=min(sum((code(2:2^k,:))')) %最小码距运行结果:051015200510152000.10.20.30.40.50.60.70.80.91。

(完整word版)通信仿真-hamming码编码译码

(完整word版)通信仿真-hamming码编码译码

线性分组码线性分组码的线性是指码组中码元间的约束关系为线性;分组是指编码时将每k个信息位一组进行独立处理,变换成长度为n (n>k) 的二进制码组。

本次仿真采用(7,4)HAMMING码。

性能参数如下:生成矩阵G:1 1 0 1 0 0 00 1 0 0 1 0 01 1 1 0 0 1 01 0 1 0 0 0 1校验矩阵H:1 0 0 1 0 1 10 1 0 1 1 1 00 0 1 0 1 1 1可纠错误图样:码长:n = 7信息位:k = 4监督位:n – k = 3最小距离: d = 3码率:k/n = 4/7(7,4)HAMMING码能纠正每一种单个随机错误。

MATLAB源程序function [output_h74]=hamming74(input_h74)%hamming74.m(7,4)HAMMING码编码器%input_h74 输入序列%output_h74 输出编码序列if(rem(length(input_h74),4)~=0)input_h74=[input_h74,zeros(1,4-rem(length(input_h74),4))]; endn=length(input_h74)/4;u=zeros(1,n*7);j=1;for i=1:4:n*4u(j)=rem((input_h74(i)+input_h74(i+2)+input_h74(i+3)),2);u(j+1)=rem((input_h74(i)+input_h74(i+1)+input_h74(i+2)),2);u(j+2)=rem((input_h74(i+1)+input_h74(i+2)+input_h74(i+3)),2);u(j+3)=input_h74(i);u(j+4)=input_h74(i+1);u(j+5)=input_h74(i+2);u(j+6)=input_h74(i+3);j=j+7;endoutput_h74=u;%hamming74.m(7,4)HAMMING码编码器function [h4_output,h7_output]=h47(h74_channel_output)%h47.m (7,4)HAMMING码译码器%h74_channel_output 信道输入序列%h4_output 译码输出序列%h7_output 纠错后的信道输入序列if(rem(length(h74_channel_output),7)~=0)h74_channel_output=[h74_channel_output,zeros(1,7-rem(length(h74_channel_output),7))]; endn=length(h74_channel_output)/7;u4=zeros(1,n*4);u7=zeros(1,n*7);s=zeros(1,7-4);e=zeros(1,7);for i=1:7:n*7s(i)=rem((h74_channel_output(i)+h74_channel_output(i+3)+h74_channel_output(i+5)+h74_channel_o utput(i+6)),2);s(i+1)=rem((h74_channel_output(i+1)+h74_channel_output(i+3)+h74_channel_output(i+4)+h74_chan nel_output(i+5)),2);s(i+2)=rem((h74_channel_output(i+2)+h74_channel_output(i+4)+h74_channel_output(i+5)+h74_chan nel_output(i+6)),2);e(i)= s(i)*(1-s(i+1))*(1-s(i+2));e(i+1)=(1-s(i))*s(i+1)*(1-s(i+2));e(i+2)=(1-s(i))*(1-s(i+1))*s(i+2);e(i+3)=s(i)*s(i+1)*(1-s(i+2));e(i+4)=(1-s(i))*s(i+1)*s(i+2);e(i+5)=s(i)*s(i+1)*s(i+2);e(i+6)=s(i)*(1-s(i+1))*s(i+2);for k7=0:6u7(i+k7)=rem(h74_channel_output(i+k7)+e(i+k7),2);endfor k4=0:3u4(j+k4)=u7(i+7-4+k4);endj=j+4;h4_output=u4;h7_output=u7;%h47.m (7,4)HAMMING码译码器function [p]=smldPe55_74(snr_in_dB)%smldPe55_74.m 二进制双极性(7,4)HAMMING码通信系统的蒙特卡罗仿真函数%snr_in_dB 信噪比%p 误码率E=1;SNR=exp(snr_in_dB*log(10)/10);%Eb/N0sgma=E/sqrt(2*SNR);N=16;loop=10^5/N;Ns=N*loop; %仿真序列长度10^5,运行时间约1.5分钟numoferr_74=0;temp=0;dsource=zeros(1,N);output_h74=hamming74(dsource);channel_output=zeros(1,length(output_h74));[h4output,h7output]=h47(output_h74);for j=1:loopfor i=1:Ntemp=rand;if (temp<0.5)dsource(i)=0;elsedsource(i)=1;endendoutput_h74=hamming74(dsource);for i=1:length(output_h74)if(output_h74(i)==0)r=-E+gngauss(sgma);elser=E+gngauss(sgma);endif (r<0)channel_output(i)=0;elsechannel_output(i)=1;endend[h4output,h7output]=h47(channel_output); for i=1:N%length(h4output)if(h4output(i)~=dsource(i))numoferr_74=numoferr_74+1;endendendnumoferr_74,p=numoferr_74/Ns;%二进制双极性(7,4)HAMMING码通信系统的蒙特卡罗仿真函数function [p_err,gamma_db]=p_e_hd_a(gamma_db_l,gamma_db_h,k,n,d_min) %p_e_hd_a.m 硬判决性能估计函数%p_err 误码率%gamma_db 信噪比范围%gamma_db_l >10 信噪比下界%gamma_db_h 信噪比上界%k 信息码长%n 编码长度%d_min 最小距离gamma_db=[gamma_db_l:(gamma_db_h-gamma_db_l)/20:gamma_db_h]; gamma_b=10.^(gamma_db/10);R_c=k/n;p_b=q(sqrt(2.*R_c.*gamma_b));p_err=(2^k-1).*(4*p_b.*(1-p_b)).^(d_min/2);%p_e_hd_a.m 硬判决性能估计函数function [p_err,gamma_db]=p_e_sd_a(gamma_db_l,gamma_db_h,k,n,d_min) %p_e_sd_a.m 软判决性能估计函数%p_err 误码率%gamma_db 信噪比范围%gamma_db_l >10 信噪比下界%gamma_db_h 信噪比上界%k 信息码长%n 编码长度%d_min 最小距离gamma_db=[gamma_db_l:(gamma_db_h-gamma_db_l)/20:gamma_db_h]; gamma_b=10.^(gamma_db/10);R_c=k/n;p_err=(2^k-1).*q(sqrt(d_min.*R_c.*gamma_b));%p_e_sd_a.m 软判决性能估计函数%ce55_74.m 仿真绘图语句%仿真序列长度10^5,运行时间约20分钟echo onSNRindB55741=0:16;SNRindB55742=0:0.1:16;smld_err_prb55=zeros(1,length(SNRindB55741));smld_err_prb74=zeros(1,length(SNRindB55741));SNR5574=0;theo_err_prb5574=zeros(1,length(SNRindB55742));%for i=1:length(SNRindB55741)smld_err_prb55(i)=smldPe55(SNRindB55741(i));smld_err_prb74(i)=smldPe55_74(SNRindB55741(i));endfor i=1:length(SNRindB55742)SNR5574=exp(SNRindB55742(i)*log(10)/10);theo_err_prb5574(i)=(1/2)*erfc(sqrt(2*SNR5574)/sqrt(2));%Qfunct y=(1/2)*erfc(x/sqrt(2));%theo_err_prb(i)=Qfunct(sqrt(2*SNR));end[p_err_ha,gamma_db_ha]=p_e_hd_a(5,16,4,7,3);%p_e_hd_a.m 硬判决性能估计函数[p_err_sa,gamma_db_sa]=p_e_sd_a(5,16,4,7,3);%p_e_sd_a.m 软判决性能估计函数%绘图语句figure;semilogy(SNRindB55741,smld_err_prb55,'b*-');hold onaxis([0,16,1e-5,1]);xlabel('Eb/N0 in dB');ylabel('Pe');title('(7,4)HAMMING编码系统仿真结果与未编码系统的比较,以及软硬判决解码误码率界'); semilogy(SNRindB55741,smld_err_prb74,'ro-');semilogy(SNRindB55742,theo_err_prb5574,'b:');semilogy(gamma_db_ha,p_err_ha,'g');semilogy(gamma_db_sa,p_err_sa,'m');%ce55_74.m 仿真绘图语句运行结果下图(ce55_74的运行结果)给出了不同信噪比条件下,发送100000比特的二进制双极性(7,4)HAMMING编码通信系统的蒙特卡罗仿真结果,以及未编码系统的仿真结果和未编码系统的理论值曲线,还给出了软硬判决解码的误码率估计函数。

(完整版)(7,4)汉明码信道编码_共10页

(完整版)(7,4)汉明码信道编码_共10页

a2
1 1 1 0 a4
a1
1 1 0 1 a3
a0
1011
A = [a6 a5 a4 a3] ·G
其中
(4.3.1) (4.3.2)
1000 111 0100 110 G= 0010 101 0001 011
(4.3.3)
G 称为生成矩阵,由 G 和信息组就可以产生全部码字。生成矩阵也可以分成2部分,
4.课程设计分析
4.1 (7,4)汉明码信道编码的基本概念
线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若
督元是按线性关系相加而得到的,则称其为线性分组码。
现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为 A=[a6,a5,a4,a3, a2,a1,a0],其中前4位是信息元,后3位是监督元,可用下列线性方程组来描述 该分组码,产生监督元:
3.2 汉明码的校验
与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数 据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明 码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
3.2 汉明码的纠错
在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向 纠错 FEC。在数据链路中存在大量噪音时,FEC 可以增加数据吞吐量。通过在 传输码列中加入冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传 协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。在接受端通过
信息传输中信道中的噪声干扰不仅使原代码的每一位(k 比特)可能出错,而 且附加纠错位(比特)也可能出错,故“一个差错”的情况共有 k+r 种,加上“ 正常” 态共有 k+r +1 种状态,而 r 比特的附加纠错位要能分辨这 k+r +1 种状态。 推导并使用长度为 k 位码字的汉明码,所需步骤如下 :

(7,4)汉明码编译码软件设计

(7,4)汉明码编译码软件设计

*******************实践教学*******************兰州理工大学计算机与通信学院2012年秋季学期计算机通信课程设计题目:(7,4)汉明码编译码软件设计专业班级:姓名:学号:指导教师:成绩:摘要汉明码是一种能自动检错并纠正一位错码的线性纠错码,用于信道编码与译码中,高通信系统抗干扰的能力。

本次课设主要是(7,4)汉明码的编译码软件设计,该软件可以对输入的多个四位信息码进行编码,对于接收的多个七位信息码可以进行译码,从而译出四位信息位.当接收到的信息码有一位错误时,可以纠正这一位错码,进而译出正确的信息码组,整个程序使用C语言编写.关键词:汉明码、编码、译码、检错、纠错目录一、C语言简介 (1)1.1什么是C语言 (1)1.2 C语言的特点 (1)1.3 运行C程序的步骤与方法 (2)二、汉明码编码 (4)2.1汉明码编码原理 (4)2.2监督矩阵 (6)2.3生成矩阵 (7)三、汉明码纠错检错 (9)3.1 汉明距离 (9)3.2 汉明码纠错原理 (9)四、汉明码编译码的实现过程 (10)4.1编码过程 (10)4.2译码过程 (10)五、软件设计及测试分析 (12)5.1程序流程图 (12)5.1.2 编码程序流程图 (12)5.1.3 译码程序流程图 (13)5.2 软件运行分析 (15)5.2.1主程序运行分析 (15)5.2.2 编码运行分析 (17)5.2.3 译码运行分析 (18)5.3 软件分析 (19)总结 (20)参考文献 (21)附录 (22)一、C语言简介1.1什么是C语言C语言是一种计算机程序设计语言。

它既具有高级语言的特点,又具有汇编语言的特点。

它由美国贝尔研究所的D.M.Ritchie于1972年推出。

1978后,C语言已先后被移植到大、中、小及微型机上。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通信原理课程设计报告书课题名称 基于MATLAB 的(7,4)汉明码编译码设计与仿真结果分析姓 名 学 号学 院 通信与电子工程学院专 业 通信工程指导教师※※※※※※※※※ ※※ ※※ ※※2009级通信工程专业通信原理课程设计2011年 12月 23日基于MATLAB 的(7,4)汉明码编译码设计与仿真结果分析1 设计目的(1)熟悉掌握汉明码的重要公式和基本概念。

(2)利用MATLAB 编程,实现汉明码编译码设计。

(3)理解(7,4)汉明码的构造原理,掌握(7,4)汉明码的编码和译码的原理和设计步骤。

(4)对其仿真结果进行分析。

2 设计要求(1)通过MATLAB 编程,设计出(7,4)汉明码的编码程序。

(2)编码后加入噪声,然后译码,画出信噪比与误比特数和信噪比与误比特率的仿真图。

(3)然后对其结果进行分析。

3 设计步骤3.1线性分组码的一般原理线性分组码的构造 3.1.1 H 矩阵根据(7, 4)汉明码可知一般有现在将上面它改写为上式中已经将“⊕”简写成“+”。

上式可以表示成如下矩阵形式:⎪⎩⎪⎨⎧=⊕⊕⊕=⊕⊕⊕=⊕⊕⊕000034613562456a a a a a a a a a a a a ⎪⎭⎪⎬⎫=⋅+⋅+⋅+⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅+⋅+⋅+⋅010011010010101100010111012345601234560123456a a a a a a a a a a a a a a a a a a a aa上式还可以简记为H ⋅ A T= 0T或 A ⋅ H T= 0式中A = [a 6 a 5 a 4 a 3 a 2 a 1 a 0]0 = [000]右上标“T”表示将矩阵转置。

例如,H T 是H 的转置,即H TH的第一列,H T 的第二行为H 的第二列等等。

将H 称为监督矩阵。

只要监督矩阵H 给定,编码时监督位和信息位的关系就完全确定了。

H 矩阵的性质:1) H 的行数就是监督关系式的数目,它等于监督位的数目r 。

H 的每行中“1”的位置表示相应码元之间存在的监督关系。

例如,H 的第一行1110100表示监督位a 2是由a 6 a 5 a 4之和决定的。

H 矩阵可以分成两部分,例如式中,P 为r ⨯ k 阶矩阵,I r 为r ⨯ r 阶单位方阵。

我们将具有[P I r]形式的H 矩阵称为典型阵。

2) 由代数理论可知,H 矩阵的各行应该是线性无关的,否则将得不到 r 个线性无关的监督关系式,从而也得不到 r 个独立的监督位。

若一矩阵能写成典型阵形式[P I r],则其各行一定是线性无关的。

因为容易验证[I r]的各行是线性无关的,故[P I r]的各行也是线性无关的。

3.1.2 G 矩阵: 上面汉明码例子中的监督位公式为)(模20001011001110101011101000123456⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡a a a a a a a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=101100111010101110100H []r PI H =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=001101101011011001110 ⎪⎨⎧⊕⊕=⊕⊕=35614562a a a a a a a a也可以改写成矩阵形式: 或者写成式中,Q 为一个k ⨯ r 阶矩阵,它为P 的转置,即 Q = P T上式表示,在信息位给定后,用信息位的行矩阵乘矩阵Q 就产生出监督位。

我们将Q 的左边加上1个k ⨯ k 阶单位方阵,就构成1个矩阵GG 称为生成矩阵,因为由它可以产生整个码组,即有或者因此,如果找到了码的生成矩阵G[I k Q ]形式的生成矩阵称为典型生成矩阵。

由典型生成矩阵得出的码组A 中,信息位的位置不变,监督位附加于其后。

这种形式的码称为系统码。

G 矩阵的性质:1) G 矩阵的各行是线性无关的。

因为由上式可以看出,任一码组A 都是G 的各行的线性组合。

G 共有k 行,若它们线性无关,则可以组合出2k 种不同的码组A ,它恰是有k 位信息位的全部码组。

若G 的各行有线性相关的,则不可能由G 生成2k 种不同的码组了。

2) 实际上,G 的各行本身就是一个码组。

因此,如果已有k 个线性无关的码组,则可以用其作为生成矩阵G ,并由它生成其余码组。

3.1.3 校正子S当接收码组有错时,E ≠ 0,将B 当作A 代入公式(A ⋅ H T = 0)后,该式不一定成立。

在错码较多,已超过这种编码的检错能力时,B 变为另一许用码⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡3456012101111011110a a a a a a a [][][]Q 34563456012011101110111a a a a a a a a a a a =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=[]⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡==0110001101001011001001111000 Q G k I [][]G ⋅=34560123456a a a a a a a a a a a GA ⋅=][3456a a a a组,则该式仍能成立。

这样的错码是不可检测的。

在未超过检错能力时,上式不成立,即其右端不等于0。

假设这时该式的右端为S ,即B ⋅ H T = S将B = A + E 代入上式,可得S = (A + E ) H T = A ⋅ H T + E ⋅ H T 由于A ⋅ H T = 0,所以S = E ⋅ H T式中S 称为校正子。

它能用来指示错码的位置。

S 和错码E 之间有确定的线性变换关系。

若S 和E 之间一一对应,则S 将能代表错码的位置。

3.2 (7,4)汉明码的构造原理在偶数监督码中,由于使用了一位监督位a 0,它和信息位a n-1 … a 1一起构成一个代数式:在接收端解码时,实际上就是在计算若S = 0,就认为无错码;若S = 1,就认为有错码。

现将上式称为监督关系式,S 称为校正子。

由于校正子S 只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。

若监督位增加一位,即变成两位,则能增加一个类似的监督关系式。

由于两个校正子的可能值有4中组合: 00,01,10,11,故能表示4种不同的信息。

若用其中1种组合表示无错,则其余3种组合就有可能用来指示一个错码的3种不同位置。

同理,r 个监督关系式能指示1位错码的(2r – 1)个可能位置。

一般来说,若码长为n ,信息位数为k ,则监督位数r =n -k 。

如果希望用r 个监督位构造出r 个监督关系式来指示1位错码的n 种可能位置,则要求然后根据(7,4)汉明码的编码原理,画出程序设计的流程图:021=⊕⊕⊕--a a a n n 021a a a S n n ⊕⊕⊕=-- 1212++≥≥-r k nr r或图1 编码流程图然后根据流程图进行编写程序。

4、程序设计clear all;close all;N=30000;K=4*N;%信息长度Q=8;%调制形式num=zeros(20,1);%误比特数ber=zeros(20,1);%误比特率for SNR=1:1:20%生成矩阵G=[1 0 0 0 1 1 10 1 0 0 1 1 00 0 1 0 1 0 10 0 0 1 0 1 1 ];%监督矩阵H=[1 1 1 0 1 0 01 1 0 1 0 1 01 0 1 1 0 0 1];A=zeros(7*N,1);编码后信号S=zeros(N,3);%校验子E=zeros(7*N,1);%错误图样I=zeros(7*N,1);%解调纠错后的矩阵NEW=zeros(K,1);%收到的信号a=randsrc(K,1,[0,1]);%信源%编码for k=1:Ncode=[a(4*k-3) a(4*k-2) a(4*k-1) a(4*k)]*G;for l=0:6A(7*k-l)=mod(code(7-l),2);endend%8PSK调制Xa=pskmod(A,Q);%信道传输加噪Xb=awgn(Xa,SNR);%解调B=pskdemod(Xb,Q);%编码for n=1:NM=7*n-6;Z=4*n-3;T=7*n-3;V=4*n;L=7*n;s=B(M:L,1)'*H';S(n,:)=mod(s,2);if S(n,:)==[0 0 0]E(M:L,1)=[0 0 0 0 0 0 0]';elseif S(n,:)==[0 0 1]E(M:L,1)=[0 0 0 0 0 0 1]';elseif S(n,:)==[0 1 0]E(M:L,1)=[0 0 0 0 0 1 0]';elseif S(n,:)==[0 1 1]E(M:L,1)=[0 0 0 0 1 0 0]';elseif S(n,:)==[1 0 0]E(M:L,1)=[0 0 0 1 0 0 0]';elseif S(n,:)==[1 0 1]E(M:L,1)=[0 0 1 0 0 0 0]';elseif S(n,:)==[1 1 0]E(M:L,1)=[0 1 0 0 0 0 0]';elseif S(n,:)==[1 1 1]E(M:L,1)=[1 0 0 0 0 0 0]';endP=B(M:L,1)+E(M:L,1);I(M:L,1)=mod(P,2);NEW(Z:V,1)=I(M:T,1);end[num(SNR,:),ber(SNR,:)]=biterr(NEW,a); endplot(num,'b:s'); %画出误比特数xlabel('信噪比');ylabel('误比特数');figureplot(ber,'k-*'); %画出误比特率 xlabel('信噪比'); ylabel('误比特率');5、设计结果及分析5.1通过对以上程序的编译运行仿真可以得到以下两个仿真图。

x 104信噪比误比特数图2 汉明码译码误比特数图0246810121416182000.050.10.150.20.250.30.350.40.450.5信噪比误比特率图3 汉明码译码误比特率图5.2 编码后信号A 与经过校验子S 校验后译码得到的信号截图图 4 编码后信号A 的截图图5 译码得到的信号截图5.3 仿真结果分析(1)观察图2和图3我们可以看到误比特数和误比特率随信噪比的增加而减小,并最后趋于0.由图4和图5,再联系前面校正子s与各码元之间的对应关系,我们可以发现校正子s的重要作用。

相关文档
最新文档