汉明码编译码课件Word格式文档下载.docx

上传人:b****2 文档编号:5784342 上传时间:2023-05-05 格式:DOCX 页数:13 大小:266.79KB
下载 相关 举报
汉明码编译码课件Word格式文档下载.docx_第1页
第1页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第2页
第2页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第3页
第3页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第4页
第4页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第5页
第5页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第6页
第6页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第7页
第7页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第8页
第8页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第9页
第9页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第10页
第10页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第11页
第11页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第12页
第12页 / 共13页
汉明码编译码课件Word格式文档下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汉明码编译码课件Word格式文档下载.docx

《汉明码编译码课件Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汉明码编译码课件Word格式文档下载.docx(13页珍藏版)》请在冰点文库上搜索。

汉明码编译码课件Word格式文档下载.docx

3.构建完整通信系统

图2完整通信系统框图

三结论分析

编写了GUI界面方便呈现过程和结果。

图3汉明码编译码演示GUI界面

以产生(7,4)汉明码为例说明过程的具体实现。

用[H,G,n,k]=hammgen(3,'

D^3+D+1'

)函数得到系统码形式的校验矩阵H、G以及码字长度n和信息位数k

假设是BSC信道,错误转移概率设定为0.1

传输后接收端得到的码流为

红色表示错误比特。

错误图样

0000001

0000010

0000100

0001000

0010000

0100000

1000000

伴随式

101

111

011

110

001

010

100

查表可知第一行码字错误图样为0100000,第二行码字错误图样为1000000,第三行码字错误图样为0000001。

进行

即可得到纠错解码的码字C2。

可以看出解码信息序列与原信息序列一样,体现了汉明码的纠错能力。

2.性能分析

1)BSC信道仿真

设置BSC错误转移概率Pe从0到1变化,步进为0.01,在每个Pe值进行1000次蒙特卡洛仿真,得到图4所示误码率随Pe变化曲线图和图5所示误帧率随Pe变化曲线图。

图6误码率随Pe变化曲线图

图中绿线为BSC信道误码率,红线为设定Pe值,蓝线为Hamming码解码误码率。

由图线可以看出仿真的BSC信道误码率与Pe一致。

在Pe<

0.2时,Hamming码的解码误码率随着BSC信道错误传输概率Pe的减小而减小。

Hamming码的解码误码率显著下降,约为Pe的1/2。

Hamming码的纠1位错起到了很好的效果。

0.2<

Pe<

0.5时,Hamming码的解码误码率大于Pe。

这是因为在Pe>

0.2时,传一个码字错误比特数近似为2,而Hamming码只能纠一位错,两位同时出错时会纠成另一个码字,这样就可能增加误比特数,使得“越纠越错”。

Pe>

0.5时,情况恰好相反。

图7误帧率随Pe变化曲线图

可以看出随着Pe增加,BSC传输误帧率和Hamming译码误帧率成S曲线上升达到1。

Hamming译码误帧率要低于BSC传输误帧率,体现了其纠错能力使得码字错误减少这一效果。

与误码率的图对比可以发现,误帧率要比误比特率高。

为了进一步验证结果的正确性,进行了simulink仿真。

图8BSC信道仿真框图

用伯努利二进制发生器产生随机序列,进行汉明码编码,进入BSC信道传输,之后进行汉明码译码,用ErrorRateCalculation模块统计误码率,结果如下:

图9simulink仿真BER随Pe变化曲线图

与程序实现仿真的结果几乎一样。

2)AWGN信道仿真

AWGN信道仿真直接用simulink实现。

图10AWGN信道仿真框图

设置系统的数字调制方式为2FSK,设定AWGN信道的SNR从0到8dB以1dB步进变化,得到误码率统计图。

图11simulink仿真BER随SNR变化曲线图

图中绿线为2FSK调制误码率,是由于AWGN带来的。

蓝线为汉明码解码后误码率。

可以看出,汉明码能够很好的降低误码率。

在SNR达到5dB时错误概率降低为0.001.

3.完整通信系统的构建

以传输图片为例,信道设置为BSC信道。

在不加入汉明码和加入汉明码两种情况下观察传输后图像的情况。

结果如下表所示。

BSC错误转移概率Pe

0.1

0.05

0.01

0.001

BSC

传输图像

加汉明码误码率

0.0652

0.02

0.0006

加汉明码传输图像

由结果可以看出,加入信道编码后,当BSC错误转移概率Pe<

0.01后,图像恢复性能有明显的改善。

这体现了汉明码虽然只有纠一位错的能力,但由于一般信道的Pe不会很大,其纠错的实用性和效果还是很好的。

四思考题解答

1.采用循环Hamming码在硬件实现中的优点?

与普通的线性分组码译码电路相比,循环汉明码不需要存储伴随式及错误图样,显著的节省了寄存器的使用,起到简化电路的作用。

2.Hamming码如何改进可提高纠检错性能?

可以在H校验矩阵基础上进行扩展,最后一行为全1行,最后一列矢量为[00…1]T。

这样任何3列是线性无关的,dmin=4,进行奇偶校验,纠错能力为1,检错能力为2。

 

下面通过实例的方式说明扩展H校验矩阵的检错性能。

首先在(7,4)汉明码的基础上进行扩展,得到(8,4)扩展汉明码的生成矩阵H。

简化译码表如下:

0000

0001

0010

0100

1000

0000

0010

0100

0001

0011

0101

1001

0111

1101

1111

1011

错码个数

原序列

错码序列

查表结果

1

00000000

00000101

2

11101000

11101010

3

00010111

00100101

4

01001110

11000010

说明对于错码个数为1的,既可以检错也可以纠错;

错码个数为2的,可以检错,但不能纠错;

错码个数大于2的,被认为是错码个数为1,纠成其他码字。

附录

clearall

[H,G,n,k]=hammgen(3,'

);

%

%[H,G,n,k]=hammgen(3,'

D^4+D^2+D+1'

%[H,G,n,k]=hammgen(4,'

D^4+D+1'

%[H,G,n,k]=hammgen(5,'

D^5+D^2+1'

%%产生校验矩阵

E=[zeros(1,n);

fliplr(eye(n,n))];

%产生错误图样一共是n+1个

S=mod(H*E'

2);

%生成错误图样的伴随式

%产生消息序列

%二进制随机矩阵

%M=randi([0,1],1,k);

%产生4位消息列

nm=3;

M=randi([0,1],nm,k);

%消息序列

code=mod(M*G,2);

%对消息序列编码

%BSC信道进入

Pe=0.1;

forj=1:

nm

fori=1:

n

code_bsc(j,i)=mod(code(j,i)+(unidrnd(round(1/Pe))==1),2);

%模2加得到传输后的编码

delta(j,i)=code_bsc(j,i)-code(j,i);

%作差来计算错误位置

end

ep=find(delta~=0);

%errorposition

display(length(ep),'

BSC错误位数'

display(length(ep)/(nm*n),'

BSC误比特率'

Scode=mod(code_bsc*H'

2)'

;

%Scode=[110]'

errow2=0;

fori=1:

ifsum(code_bsc(i,:

)-code(i,:

))~=0

errow2=errow2+1;

end

display(errow2,'

BSC错误码字数'

%display(errow2/nm,'

BSC误码率'

form=1:

n+1

ifS(:

i)==Scode(:

m)

j=i;

end%找到对应的伴随式的位置

dcode(m,:

)=mod(code_bsc(m,:

)+E(j,:

),2);

er=length(find(dcode-code~=0));

%计算误比特的个数

enta=er/(nm*n);

display(code,'

信息序列码字'

display(code_bsc,'

BSC传输后的信息序列码字'

display(dcode,'

解码后的信息序列'

解码后误码率'

%display(er,'

解码后错误比特数'

m2=dcode(:

n-k+1:

end);

解码后信息序列'

ifsum(dcode(i,:

%display(errow2,'

解码后错误码字数'

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2