欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    74循环码的编码和译码.docx

    • 资源ID:17512223       资源大小:50.14KB        全文页数:13页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    74循环码的编码和译码.docx

    1、74循环码的编码和译码 (7,4)循环码的编码译码编码的实验原理: 根据循环码的代数性质建立系统编码的过程,可以把消息矢量用如下多项式表示: 要编码成系统循环码形式,把消息比特移入码字寄存器的最右边k位,而把监督比特加在最左边的n-k个中,则要用乘以m(x)得到 m(x)= m(x)= q(x) g(x)+ p(x),其中p(x)可以表示为p(x)= ,则p(x)+ m(x)= +另U(x)= p(x)+ m(x),则U=(,,, ,,,). 本实验根据以上原理,用matlab实现书上例6。8系统形式的循环码,生成多项式为g(x)=(7,4)循环码的编码的程序如下:clear;clc;a=1

    2、0 1 1;高次项系数在前的生成多项式Gx=1 0 1 1;将数组a的高位依次放在数组Data的低位 Data=zeros(1,7);Data(1)=a(4); Data(2)=a(3); Data(3)=a(2); Data(4)=a(1); %Data除以Gx得到余数Rx Qx,Rx=deconv(Data,Gx); b=Rx+Data; %将数组b的高位放在后面 c=b(1); b(1)=b(7); b(7)=c; c=b(2); b(2)=b(6); b(6)=c; c=b(3); b(3)=b(5); b(5)=c; %将数组b校正 for i=1:7 if rem(abs(b(i)

    3、),2)=0 b(i)=0;end endfor i=1:7 if rem(abs(b(i),2)=1 b(i)=1;endenddisp(输入序列:);adisp(编码输出序列:);b程序运行结果为:输入序列:a = 1 1 0 0编码输出序列:b = 1 0 1 1 1 0 0改变输入序列a=1 0 1 1,运行结果:输入序列:a = 1 0 1 1编码输出序列:b = 1 0 0 1 0 1 1运行结果的编码如下:序号输入序列输出序列序号输入序列输出序列10000 000 000091000110 100020001101 0001101001011 100130010111 00101

    4、11010001 101040011010 0011121011100 101150100011 0100131100101 110060101110 0101141101000 110170110100 0110151110010 111080111001 0111161111111 1111译码的实验原理 g(x)= ,在(n,k)循环码中,由于g(x)能除尽,因此可分解成g(x)和其他因式的乘积,记为 即可写成 即h (x) =则 = ,其中式h(x)的逆多项式。监督矩阵多项式可表示为 , 相对应的译码和纠错(一位)程序如下:clear;clc;r=1 0 0 1 1 1 1;h=1,0

    5、,0;1,1,0;1,1,1;0,1,1;1,0,1;0,1,0;0,0,1;b=flipud(h);s=r*b;for i=1:3 if rem(abs(s(i)),2)=0 s(i)=0;end endfor i=1:3 if rem(abs(s(i),2)=1 s(i)=1;endend if s=0 0 0 e=0 0 0 0 0 0 0 elseif s=1 0 0 e=0 0 0 0 0 0 1 elseif s=1 1 0 e=0 0 0 0 0 1 0 elseif s=1 1 1 e=0 0 0 0 1 0 0 elseif s=0 1 1 e=0 0 0 1 0 0 0 e

    6、lseif s=1 0 1 e=0 0 1 0 0 0 0 elseif s=0 1 0 e=0 1 0 0 0 0 0 else s=0 0 1 e=1 0 0 0 0 0 0 endu=r+e;for i=1:7 if rem(abs(u(i)),2)=0 u(i)=0;end endfor i=1:7 if rem(abs(u(i)),2)=1 u(i)=1;endendData=zeros(1,4); Data(1)=u(4); Data(2)=u(5); Data(3)=u(6); Data(4)=u(7);if e=0 0 0 0 0 0 0disp(第几位错误:)k=0,else

    7、disp(第几位错误:) k=find(e) ;enddisp(接受码字)rdisp(编码输出序列:)Data运行程序结果如下:e = 0 0 0 0 1 0 0第几位错误:k = 5接受码r = 1 0 0 1 1 1 1编码输出序列:Data =1 0 1 1以上编码有个缺点,就是它只能对一个消息矢量(4位)进行编码,我又在这个基础上编写了一个可以同时对位数是4的倍数的消息矢量进行编码,多位循环码的编码程序如下:clear;clc;a=1 1 0 0 1 0 1 1;X,N=size(a);将信息码分为M帧,1帧4个信息码M=ceil(N/4); d=zeros(1,4);b=zeros(

    8、1,7M); Data=zeros(1,7);for k=1:M for j=1:4 d(j)=a(j+(k1)4);end%生成多项式Gx=1 0 1 1; Data(1)=d(4); Data(2)=d(3); Data(3)=d(2); Data(4)=d(1); Data除以Gx得到余数Rx Qx,Rx=deconv(Data,Gx); e=Rx+Data; b(7*k6:7k)=e(1:7);c=b(1+(k1)7);b(1+(k1)7)=b(7+(k1)*7);b(7+(k-1)*7)=c;c=b(2+(k1)7);b(2+(k1)7)=b(6+(k-1)7);b(6+(k1)7)

    9、=c;c=b(3+(k1)7);b(3+(k1)*7)=b(5+(k1)7);b(5+(k-1)*7)=c;endfor i=1:M7 if rem(abs(b(i)),2)=0 b(i)=0;endendfor i=1:M*7 if rem(abs(b(i)),2)=1 b(i)=1;endend disp(输入序列:);adisp(编码输出序列:);b程序运行结果如下:输入序列:a = 1 1 0 0 1 0 1 1编码输出序列:b = Columns 1 through 13 1 0 1 1 1 0 0 1 0 0 1 0 1 Column 14 1相应的多位译码纠错程序如下:clear

    10、;clc;r=1 0 0 1 1 0 0 1 0 0 1 0 0 1 ;X,N=size(r);将接收到的码分为M帧,1帧7个信息位M=ceil(N/7); h=1,0,0;1,1,0;1,1,1;0,1,1;1,0,1;0,1,0;0,0,1;b=flipud(h);d=zeros(1,7);U=zeros(1,4M);Data=zeros(1,7M);for i=1:M for j=1:7 d(j)=r(j+(i1)7);ends=db;for k=1:3 if rem(abs(s(k),2)=0 s(k)=0;end endfor k=1:3 if rem(abs(s(k)),2)=1

    11、s(k)=1;endend if s=0 0 0 e=0 0 0 0 0 0 0 elseif s=1 0 0 e=0 0 0 0 0 0 1 elseif s=1 1 0 e=0 0 0 0 0 1 0 elseif s=1 1 1 e=0 0 0 0 1 0 0 elseif s=0 1 1 e=0 0 0 1 0 0 0 elseif s=1 0 1 e=0 0 1 0 0 0 0 elseif s=0 1 0 e=0 1 0 0 0 0 0 else s=0 0 1 e=1 0 0 0 0 0 0 endu=d+e;for k=1:7 if rem(abs(u(k)),2)=0 u(k

    12、)=0;end endfor k=1:7 if rem(abs(u(k)),2)=1 u(k)=1;endend Data(1+7(i-1)=e(1); Data(2+7(i1)=e(2); Data(3+7(i1))=e(3); Data(4+7(i-1)=e(4); Data(5+7*(i-1)=e(5); Data(6+7*(i-1)=e(6); Data(7+7*(i1)=e(7); U(1+(i-1)4)=u(4); U(2+(i-1)*4)=u(5); U(3+(i-1)4)=u(6); U(4+(i1)4)=u(7);endif Data=zeros(1,7*M);m=0,else j,m=find(Data);enddisp(第几位错误:);mdisp(接收到的码字:);rdisp(编码输出序列:);U 运行结果如下:e = 0 0 1 0 0 0 0e =0 0 0 0 0 1 0第几位错误:m =3 13接收到的码字:r =Columns 1 through 13 1 0 0 1 1 0 0 1 0 0 1 0 0Column 14 1编码输出序列:U = 1 1 0 0 1 0 1 1 分析:这两组实验基本上完成了循环码的编码和译码,但是该实验的缺点就是不能同时对7位信息码进行两位的纠错,即只能完成一位信息码的纠错.


    注意事项

    本文(74循环码的编码和译码.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开