将编码输出序列中的第二位由1变为0,然后运行译码程序,从图4-3中可以看出是第二位发生错误,但可以看出译码输出仍为1110001,与输入码字一致,可见,此程序可以纠一位错。
4.4循环码在高斯信道下的误码性能
编码器输入信号11编码器输出信号0.50.5001020300020频谱图4060译码器输出信号11.510.50.50010203000204060
图4-4信源序列编译码输出图形
100循环码在不同信噪比下的误码率10-1误码率10-210-3-1-0.50
0.51信噪比1.522.5
图4-5循环码在不同信噪比下的误码率
13
总结
本次课程设计的题目是(15,7)循环换码的编译码方法。使用的仿真工具是MATLAB。 在做之前,我搜集了大量循环码的相关资料,知道了循环码的定义、循环码的编译码原理以及过程、码距、检纠错能力、与线性分组码的区别及联系等知识。这其中有我以前学习过的,还有新接触到的知识,在回顾掌握的同时又学习到了新的东西,令设计不再枯燥乏味。
首先根据任务书中给定的(n,k)值以及给定的生成多项式g(x),所有多项式T(x)都能被g(x)整除。根据这条原则可以对给定的信息位进行编码。设m(x)为信息码多项式,其次数小于k。用x
n-k
n-k
n-k
乘m(x),得到的xm(x)次数必定小于n。用g(x)除x
n-k
m(x),得到余式
r(x),r(x)的次数必定小于g(x)的次数,即小于(n-k)。将此余式r(x)加在信息位后作为监督为,即将r(x)和x
m(x)相加,得到的多项式必定是一个码多项式。
循环码的译码可按以下三个步骤进行: 1.接收到的y(x)计算伴随式式s(x);
?e2.根据伴随式s(x)找到对应的估值错误图样(x);
?????ceccc3.计算=y(x)+(x),得到估值码字(x)。若(x)=c(x),则译码正确,否则,若(x)≠c(x),
则译码错误。
通过对线性分组码中的循环码的编译码编程实现,了解到线性分组码的构成方式是把信息序列分成每k个码元一段,并由这k个码元按一定规则产生r 个校验位,组成长度为n=k+r的码字,用(n,k)表示。信息码元与校验位之间为线性关系。并且知道了线性分组码的编码过程信息码元与校验位之间的线性关系实现起来是十分简单的。
循环码是线性分组码中一个重要的分支。它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。
14
参考文献
[1]陈运主编.信息论与编码. 电子工业出版社 [2]孙丽华主编.信息论与纠错编码. 电子工业出版社
[3]李勇、徐震,MATLAB辅助现代工程数字信号处理,西安电子科技大学出版社 [4]刘树棠译.数字信号处理——使用MATLAB.西安:西安交通大学出版社 [5]罗军辉等编著.MATLAB7.0在数字信号处理中的应用.北京:机械工业出版社
15
附录
%3.(15,7)循环码的编码的程序: clear; clc;
a=input('请输入消息矢量:'); %高次项系数在前的生成多项式 Gx=[1 1 1 0 1 0 0 0 1];
%将数组a的高位依次放在数组Data的低位 Data=zeros(1,15); Data(1)=a(7); Data(2)=a(6); Data(3)=a(5); Data(4)=a(4); Data(5)=a(3); Data(6)=a(2); Data(7)=a(1);
úta除以Gx得到余数Rx [Qx,Rx]=deconv(Data,Gx); b=Rx+Data;
%将数组b的高位放在后面 c=b(1); b(1)=b(15); b(15)=c; c=b(2); b(2)=b(14); b(14)=c; c=b(3); b(3)=b(13); b(13)=c;
16
c=b(4); b(4)=b(12); b(12)=c; c=b(5); b(5)=b(11); b(11)=c; c=b(6); b(6)=b(10); b(10)=c; c=b(7); b(7)=b(9); b(9)=c; %将数组b校正 for i=1:15
if rem(abs(b(i)),2)==0 b(i)=0;end end for i=1:15
if rem(abs(b(i)),2)==1 b(i)=1;end end
disp('输入序列:'); a
disp('编码输出序列:'); %4.相对应的译码和纠错程序:clear; clc;
r=[0 1 1 1 0 1 1
1 1 1 17
0 0 0 1 1];
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库循环码的编译码方法..(4)在线全文阅读。
相关推荐: