汉明码编译码Word格式文档下载.docx
- 文档编号:15790288
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:12
- 大小:254.35KB
汉明码编译码Word格式文档下载.docx
《汉明码编译码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汉明码编译码Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
图2完整通信系统框图
三结论分析
编写了GUI界面方便呈现过程和结果。
图3汉明码编译码演示GUI界面
以产生〔7,4〕汉明码为例说明过程的具体实现。
用[H,G,n,k]=hammgen(3,'
D^3+D+1'
)函数得到系统码形式的校验矩阵H、G以及码字长度n和信息位数k
传输后接收端得到的码流为
红色表示错误比特。
错误图样
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时,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
5
BSC
传输图像
加汉明码误码率
652
加汉明码传输图像
由结果可以看出,加入信道编码后,当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,'
解码后错误码字数'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汉明码 译码