资源描述:
《循环码的编码和译码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、信息编码技术实验报告三题目:循环码的编码和译码院系:计算机科学与工程学院班级:姓名:学号:【实验目的】1.通过实验了解循环码的工作原理。2.了解生成多项式g(x)与编码、译码的关系。3.了解码距d与纠、检错能力之间的关系。【实验条件】仪器设备:PC机,应用软件:Matlab。【实验内容】1、编程实现(7,4)系统循环码的编、译码。已知(7,4)循环码的生成多项式和校验多项式分别为:,。其生成矩阵和校验矩阵分别为:2、计算出所有的码字集合,可纠错误图样E(x)表和对应的错误伴随式表。【程序代码】%(7,4)系
2、统循环码编码、译码clc;clearall;closeall;%=================编码================n=7;k=4;r=n-k;mx=input('请输入信息码字:m=');%输入信息码字gx=[1011];%循环码生成多项式x_nk=[1,zeros(1,r)];%x^(n-k),messg=conv(x_nk,mx);%x^(n-k)*mx[qx,rx0]=deconv(messg,gx);%模gx,qx为所得除式,rx0为余式rx=mod(rx0,2);%将余式r
3、x0转换为二进制cx=messg+rx;%编码码字多项式c=cx%输出编码码字%=================绘图===================fs=1000;ts=1/fs;%fs为一个单位内的样点fori=1:n%以方波形式输出编码码字,一个单位内一个码字forj=1:fscx_wave((i-1)*fs+j)=c(i);endendt=0:ts:n-ts;plot(t,cx_wave);%以方波形式输出编码码字xlabel('时间');ylabel('幅度');title('(7,4)循环
4、码编码输出波形');axis([0701.2]);%==================译码====================S=zeros(1,r);%初始化校验子gx=[1011];%循环码生成多项式Rx=input('请输入接收码字:R=');%接收码字多项式%Rx=[1010111];R=Rx;%接收码字[nx,Sx0]=deconv(Rx,gx);%接收码字多项式除以gx,Sx0为余式(十进制)Sx=mod(Sx0,2);%将Sx0转换为G(2)域下多项式S=Sx(5:7);%Sx0最后
5、3位为检验子ifS==[000]%校验子=0disp('Thereisnowrong!');%显示接收码字无错E=[0000000];%查表得出错误图样为0C=R;%译码输出为接收码字elseifS==[001]%接收码字第一位r0错disp('r0iswrong!');%显示r0错E=[0000001];%查表得出错误图样C=xor(R,E);%译码输出C=R+EelseifS==[010]%r1错disp('r1iswrong!');E=[0000010];C=xor(R,E);elseifS==[10
6、0]%r2错disp('r2iswrong!');E=[0000100];C=xor(R,E);elseifS==[011]%r3错disp('r3iswrong!');E=[0001000];C=xor(R,E);elseifS==[110]%r4错disp('r4iswrong!');E=[0010000];C=xor(R,E);elseifS==[111]%r5错disp('r5iswrong!');E=[0100000];C=xor(R,E);elseifS==[101]%r6错disp('r6is
7、wrong!');E=[1000000];C=xor(R,E);endC%输出译码码字【实验结果】请输入信息码字:m=[1011010]c=1011010110请输入接收码字:R=[1011010110]Thereisnowrong!C=1011010110【实验心得】通过本次实验,我加深了对循环码的工作原理的理解,也了解了生成多项式g(x)与编码、译码的关系和码距d与纠、检错的关系,在动手实验过程中,对知识点的印象更加清晰,让我的理解更加深刻了。