汉明码的性能分析Word格式.docx
《汉明码的性能分析Word格式.docx》由会员分享,可在线阅读,更多相关《汉明码的性能分析Word格式.docx(27页珍藏版)》请在冰点文库上搜索。
系主任(或责任教师)签名:
年月日
目录
摘要3
Abstract4
1.引言5
2.设计原理6
2.1汉明码编码原理6
2.2汉明码纠错原理8
2.3程序函数及命令介绍9
3.仿真与程序11
3.1仿真11
3.1.1SIMULINK仿真11
3.1.2模块属性设置12
3.1.3M文件程序14
3.1.4仿真结果15
3.1.5调试20
3.1.6结果分析20
3.2程序20
3.2.1程序20
3.2.2调试结果21
3.2.3结果分析22
4.总结23
参考文献24
摘要
随着信息时代和数字世界的到来,通信原理已成为当今一门极其重要的学科和技术领域。
在通信原理中起着重要的作用并已获得广泛应用的是汉明码。
汉明码是一种能够自动检测并纠正一位错码的线性纠错码,即SEC码,用于信道编码与译码中,提高通信系统抗干扰的能力。
MATLAB是英文MATrixLABoratory(矩阵实验室)的缩写。
它是美国的MathWorks公司推出的一套用于科学计算和图形处理可视化、高性能语言与软件环境。
它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。
在设计汉明码建模仿真时,通常采用MATLAB来进行辅助设计和仿真。
本文主要利用MATLAB中SIMULINK通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率与信噪比关系曲线图。
在此基础上,对汉明码的性能进行分析,得出结论。
关键词:
通信原理MATLAB汉明码SIMULINK
Abstract
Withtheinformationageandtheadventofthedigitalworld,communicationprincipleshasbecomeanextremelyimportantdisciplinesandtechnicalfields.IncommunicationprinciplesplaysanimportantroleandhasbeenwidelyusedinHammingCode.HammingCodeisalinearerror-correctingcodewhichcanautomaticallydetectandcorrectanerror.ItisbelongstoSECcodeandappliedtochannelencodinganddecodingtoimprovetheanti-jammingcapacityofthecommunicationsystem.
MATLABisinEnglishMATrixLABoratory(MatrixLaboratory)acronym.ItistheUnitedStates,MathWorkshasintroducedasetofcomputingandgraphicsprocessingforscientificvisualization,high-performancelanguageandsoftwareenvironment.Itssignalprocessingtoolboxcontainsavarietyofclassicandmoderndigitalsignalprocessingtechnology,isaverygoodalgorithmresearchandaideddesigntools.Inthedesignofhammingcodemodeltosimulate,itisusuallycarriedoutusingMATLAB-aideddesignandsimulation.
Inthispaper,SIMULINKsimulationmodellibraryofMATLABismainlyusedtobuildhammingcodemodeltosimulate.Atthesametime,communicationsystemfunctionsiscalledtoprogram.Andtime-domainwaveform,spectrum,therelationshipbetweenBERandSNRcurveisdrawn.Onthisbasis,thepropertyofthehammingcodeisanalyzedtogettheconclusion.
Keywords:
CommunicationPrinciplesMATLABHammingCodingSIMULINK
1.引言
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,其中,MATLAB通信工具箱是一套用于在通信领域进行理论研究、系统开发、分析设计和仿真的专业化工具软件包。
主要包括MATLAB和Simulink两大部分。
MATLAB通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数、函数功能覆盖了现代通信系统的各个方面。
这些函数包括:
信号源产生函数、信源编码/解码函数、纠错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。
以纠错控制编解码函数为例:
函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED—SOLOMON)、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。
Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。
Simulink是用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具。
对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。
汉明码是由Hamming首先构造的,它是一种能够自动检测并纠正一重错的线性纠错码,即SEC(SingleErrorCorrecting)码。
汉明码利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。
利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
它不仅性能好,而且编译码电路非常简单,易于实现。
从20世纪50年代问世以来,在提高系统可靠性方面获得了广泛的应用。
2.设计原理
2.1汉明码编码原理
一般来说,若汉明码长为n,信息位数为k,则监督位数r=n-k。
若希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求
或
(公式2-1)
下面以(7,4)汉明码为例说明原理:
设汉明码(n,k)中k=4,为了纠正一位错码,由式
(1)可知,要求监督位数r≥3。
若取r=3,则n=k+r=7。
我们用
来表示这7个码元,用
的值表示3个监督关系式中的校正子,则
的值与错误码元位置的对应关系可以规定如表2-1所列。
表2-1校正子和错码位置的关系
错码位置
001
101
010
110
100
111
011
000
无错码
则由表1可得监督关系式:
(公式2-2)
(公式2-3)
(公式2-4)
在发送端编码时,信息位
的值决定于输入信号,因此它们是随机的。
监督位
、
应根据信息位的取值按监督关系来确定,即监督位应使式
(2)~式(4)中
的值为0(表示编成的码组中应无错码)
(公式2-5)
式(5)经过移项运算,接触监督位
(公式2-6)
式(5)其等价形式为:
(公式2-7)
式(6)还可以简记为
(公式2-8)
其中
所以有
(公式2-9)
式(6)等价于
(公式2-10)
其中Q为P的转置,即
(公式2-11)
式(10)表示,在信息位给定后,用信息位的行矩阵乘矩阵Q就产生出监督位。
我们将Q的左边加上一个k×
k阶单位方阵,就构成一个矩阵G
(公式2-12)
G称为生成矩阵,因为由它可以产生整个码组,即有
(公式2-13)
或者
(公式2-14)
式(13)即汉明码的编码原理
2.2汉明码纠错原理
当数字信号编码成汉明码形式后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。
一般来说接收码组与A不一定相同。
若设接收码组为一n列的行矩阵B,即
(公式2-15)
则发送码组和接收码组之差为
(公式2-16)
E就是传输中产生的错码行矩阵
(公式2-17)
若ei=0,表示接收码元无错误,若ei=1,则表示该接收码元有错。
式(16)可改写成
(公式2-18)
若E=0,即接收码组无错,则
,将它代人式(8),该是仍成立,即有
(公式2-19)
当接收码组有错时,E≠0,将B带入式(8)后,该式不一定成立。
在未超过检错能力时,式(19)不成立。
假设此时式(19)的右端为S,即
(公式2-20)
将
代入式(20),可得
由式(8)可知,所以
(公式2-21)
此处S与前面的
有着一一对应关系,则S能代表错码位置。
因此,纠错原理即,接收端收到码组后按式(20)计算出S,再根据表1判断错码情况,进行差错纠正。
2.3程序函数及命令介绍
MATLAB中提供了汉明码的编码和译码函数,本程序直接调用进行编程。
(1)encode函数
功能:
编码函数
语法:
code=encode(msg,N,K)
说明:
对信息msg进行汉明编码,K为信息位长度,N为码字长度。
msg是一个K列矩阵。
(2)decode函数
译码函数
rcvcode=decode(code,N,K)
对接受码字进行译码,恢复出原始信息。
(3)rand函数
均匀分布随机矩阵
用法:
rand(m,n),
产生m×
n均匀分布的随机矩阵,rand产生的是0到1(不包括1)的伪随机数。
(4)rem函数
求整除余数
rem(x,y)
求整除x/y的余数
(5)length命令:
计算向量或矩阵长度
(6)sim命令:
开始进行仿真
(7)disp命令:
显示结果,不显示变量名
3.仿真与程序
3.1仿真
3.1.1SIMULINK仿真
在设计中,本系统信号产生模块选用伯努利二进制序列产生器(BernoulliBinaryGenerator)来输出速率为100Bd的随机数字信号,进入Hammingencoder进行编码,在送入AWGN信道(加入高斯白噪声)传输,接收信号送入Hammingdecoder进行差错纠正,其后加一误码率计算模块(ErrorRateCalculation)计算误码率。
再用示波器scope观察波形,用spectrumscope观测频谱。
由ToWorkspace模块将运算结果送入M文件,并画出信噪比与误码率关系的曲线。
电路如图3-6所示。
图3-1SIMULINK仿真电路图
3.1.2模块属性设置
图3-2BernoulliBinaryGenerator
图3-3AWGNAChannel
图3-4ErrorRateCalculation
图3-5ToWorkplace
图3-6SpectrumScope
3.1.3M文件程序
x=0:
30%定义信噪比的范围
y=x;
fori=1:
length(x)
xSNR=x(i);
%输入信噪比
sim('
hammingmat'
);
%运行Simulink仿真模型’hammingmat’,运算结果保存在xerrorrate中
y(i)=xerrorrate
(1);
%误码率
end
semilogy(x,y);
%对y取对数画图
gridon;
%画网格图
xlabel('
高斯信道中的信噪比/dB'
ylabel('
误码率'
title('
汉明码误码率与信噪比的关系'
)
3.1.4仿真结果
图3-7BernoulliBinaryGenerator输出信号波形
图3-8BernoulliBinaryGenerator输出信号频谱
图3-9HammingEncoder输出信号
图3-10HammingEncoder输出信号频谱
图3-11AWGNChannel输出信号
图3-12AWGNChannel输出信号频谱
图3-13Hammingdecoder输出信号
图3-14Hammingdecoder输出信号频谱
图3-15SNR=10dB的误码率
图3-16输入信噪比与输出误码率的关系曲线图
3.1.5调试
运行M文件后,画出的信噪比和误码率关系的曲线为一条直线。
调试方法:
将误码率计算模块的属性时延由1改为0,将‘toworkplace'
的属性中的‘limitdatapointstolast’改为1,且sim函数括号中内容应与仿真模块名相同,信道模块的信噪比应该设为变量,才能画出表示信噪比和误码率关系的曲线。
3.1.6结果分析
通过仿真结果可知:
(1)汉明码可以降低误码率,提高系统抗干扰能力。
(2)随着信噪比的增大,误码率逐渐减小,最终趋近于0。
(3)信源信号经过信道加噪声后,频率分量增多,经过译码器译码后,频率分量减少,但还是比信源的多。
3.2程序
3.2.1程序
K=4;
%信息位长
N=7;
%码长
msg=randint(100,4,2)%产生随机二进制码,100行4列
code=encode(msg,N,K)%对msg汉明编码
code_noise=rem(code+rand(100,7)>
0.95,2)%信道输出(加噪后>
0.95为1)
rcv=decode(code_noise,N,K)%对信道输出信号汉明译码
disp(['
信道输出误码率:
'
num2str(symerr(code,code_noise)/length(code))])
译码器输出信号误码率:
num2str(symerr(msg,rcv)/length(msg))])
%计算误码率
3.2.2调试结果
图3-17信源信号图3-18编码器输出信号
图3-19信道输出信号图3-20译码器输出信号
图3-21误码率
3.2.3结果分析
由实验结果可知在四位信息位中加三位监督码,及汉明码编码、解码,有一定的纠错能力,能减少经过信道加的噪声的的影响,降低误码率,同时,汉明码也增加了传输信号的带宽。
4.总结
通过本次课程设计,我收获了很多:
一、我对MATLAB软件有了较深的了解,并且学会了SIMULINK仿真的基本方法。
这次课程设计是我第一次接触到SIMULINK,刚开始我无从下手,不知所措,后来经过问同学、去图书馆资查料、上网查资料,逐渐了解了SIMULLINK是MATLAB提供的用于对动态系统进行建模、仿真和分析的工具包,并且学会了它的基本使用方法。
并在调试过程不断出错的过程中,不断加强了对SIMULINK的掌握程度,能够将SIMULINK仿真和M文件相结合,分析汉明码信噪比与误码率的关系。
二、本次课程设计锻炼了我独立解决问题的能力。
刚看到题目时我一点思路也没有,到后来,自己不断探索SIMULINK,不断摸索各个模块的使用方法和属性,最后完成了SIMULINK的仿真,整个过程让我学会了发现问题,并独立解决问题的方法,也能更好的利用网络学习知识。
三、本次课程设计让我对差错控制编码有了更深的了解,并且更深刻的理解了通信原理该章节的内容。
了解了汉明码的编码、译码,及纠错原理,并能通过matlaB编程和simulink仿真理解了汉明码编码对不同信噪比下误码率的影响。
本次课程设计最重要的是让我学会了独立解决问题的方法,经过不断的学习、出错、调试、改正,锻炼了我的耐心和毅力,让我体会到了不断探索的乐趣,并体会到了付出后得到成功的激动。
此次设计也让我发现了我的不足:
对matlaB的掌握程度不够,在原来学习后,我对matlaB的许多函数、语句的用法还是不很了解,以后应当多多学习软件,辅助各门专业课的学习,并激发对本专业的学习兴趣。
参考文献
[1]徐明远邵玉斌.《MATLAB仿真在通信与电子工程中的应用》.西安电子科技大学出版社.2005
[2]王兴亮.《数字通信原理与技术》.西安电子科技大学出版社.第二版
[3]孙屹吴磊.《Simulink通信仿真开发手册》.国防工业出版社.2003
[4]葛哲学.《精通MATLAB》.电子工业出版社.2008
[5]樊昌信曹丽娜.《通信原理》.国防工业出版社.2008
[6]赵静.《基于MATLAB的通信系统仿真》.北京航空航天大学出版社.2008
[7]韩利竹王华.《MATLAB电子仿真与应用》.国防工业出版社.2003
附件:
本科生课程设计成绩评定表
姓名
性别
女
专业、班级
通信工程0906
课程设计题目:
汉明码的性能分析
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日