版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 (7,4)循环码的编码译码 编码的实验原理:根据循环码的代数性质建立系统编码的过程, 可以把消息矢量用如下多项式表示: k 1 k 2 m(x)= m=x mx . m1x m0 要编码成系统循环码形式,把消息比特移入码字存放器的最右边 k 位,而把监督比特加在最左边的 n-k个中,那么要用x乘以m(x)得到 n _k x n 1 n _2 n _k 1 n _k m(x) mk dx mkx m1x m0 x n _k x m(x)= q(x) g(x)+ p(x),其中 p(x)可以表不为 n_k 1 n-k p(x)= Pn*x + Px+Po ,那么 p(x)+ x m(x) n-1
2、 n -2 n-k 1 n-k , n -k-1 = mkx mkx m1x m0 x + pnJ.x p1x p0 n _k 力 U(x)= p(x)+ x m(x),那么 U= ( P0, Pi, P2, , p,m(o , mi, mk x) 0 本实验根据以上原理,用matlab实现书上例6.8系统形式的循环 3 码,生成多项式为g(x)= 1 x x (7,4)循环码的编码的程序如下:clear; clc; a=1 0 1 1; %高次项系数在前的生成多项式 Gx=1 0 1 1; %将数组a的高位依次放在数组Data的低位 Data=zeros(1,7); Data(1)=a(4)
3、; 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),2)=0 b(i)=0;end end for i=1:7 if rem(abs(b(i),2)=1 b(i)=1;end end disp(输入序
4、列:); disp(编码输出序列:); b 程序运行结果为:输入序列:a = 110 0 编码输出序列:b = 10 1110 0 改变输入序列a=1 0 1 1,运行结果:输入序列:a = 10 11 编码输出序列:b = 10 0 10 11 运行结果的编码如下: 序号 输入序列 输出序列 序号 输入序列 输出序列 1 0000 000 0000 9 1000 110 1000 2 0001 101 0001 10 1001 011 1001 3 0010 111 0010 11 1010 001 1010 4 0011 010 0011 12 1011 100 1011 5 0100 0
5、11 0100 13 1100 101 1100 6 0101 110 0101 14 1101 000 1101 7 0110 100 0110 15 1110 010 1110 8 0111 001 0111 16 1111 111 1111 译码的实验原理 g(x)= 1 + x+x3 ,在(n, k)循环码中, 由于 g(x) 能除尽, 因此xn+1可分解成g(x)和其他因式的乘积,记为 xn 1 : g(x)h(x)s(i)=1;end Xn 1 / g(x)即 h (x) = x4 +x2 + x 一 _ * _ - 一 - .-一 -一 ,其中h (x)式h(x)的逆多项式。 监
6、督矩阵多项式可表示为 x2h*(x) * H(x) = xh (x) * h (x) 相对应的译码和纠错(一位)程序如下: clear; clc; r=1 0 0 1 1 1 1; 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); s=r*b; for i=1:3 if rem(abs(s(i),2)=0 s(i)=0;end end for i=1:3 if rem(abs(s(i),2)=1即可写成 h(x)= 贝U h*(x)=x4 x3 x 1 end u(i)=0;end if s=0 0 0 e=0 0 0 0 0
7、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 end u=r+e; for i=1:7 if rem(abs(u(i),2)=0end for i=1:7 if rem(abs(u(i),2)=1 u(i)=
8、1;end end Data=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 0 disp(第几位错误:) k=0,else disp(第几位错误:) k=find(e) ;end disp(接受码字) r disp(编码输出序列:) Data 运行程序结果如下: e = 0 0 0 0 1 0 0 第几位错误: k = 5 接受码 r = 1 0 0 1 1 1 1 编码输出序列: Data =1 0 1 1 以上编码有个缺点,就是它只能对一个消息矢量( 我又在这个根底上
9、编写了一个可以同时对位数是 量进行编码,多位循环码的编码程序如下: 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(1,7*M); Data=zeros(1,7); for k=1:M for j=1:4 d(j)=a(j+(k-1)*4);end %生成多项式 Gx=1 0 1 1; Data(1)=d(4); 4 位)进b(i)=0;end Data(2)=d(3); Data(3)=d(2); Data(4)=d(1); %Data
10、 除以 Gx 得到余数 Rx Qx,Rx=deconv(Data,Gx); e=Rx+Data; b(7*k-6:7*k)=e(1:7); c=b(1+(k-1)*7); b(1+(k-1)*7)=b(7+(k-1)*7); b(7+(k-1)*7)=c; c=b(2+(k-1)*7); b(2+(k-1)*7)=b(6+(k-1)*7); b(6+(k-1)*7)=c; c=b(3+(k-1)*7); b(3+(k-1)*7)=b(5+(k-1)*7); b(5+(k-1)*7)=c; end for i=1:M*7 if rem(abs(b(i),2)=0end for i=1:M*7 i
11、f rem(abs(b(i),2)=1 b(i)=1;end end dispC输入序列:); a disp(编码输出序列:); b 程序运行结果如下:输入序列: a = 1 1 0 0 1 0 1 1 编码输出序列: b = Columns 1 through 13 1 0 1 1 1 0 0 1 0 1 0 1 Column 14 1 相应的多位译码纠错程序如下: clear; clc;if rem(abs(s(k),2)=1 s(k)=1;end r=1 0 0 1 1 0 0 1 0 0 1 0 0 1 ; X,N=size(r); %将接收到的码分为 M 帧, 1 帧 7 个信息位
12、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,4*M); Data=zeros(1,7*M); for i=1:M for j=1:7 d(j)=r(j+(i-1)*7);end s=d*b; for k=1:3 if rem(abs(s(k),2)=0 s(k)=0;end end for k=1:3end if rem(abs(u(k),2)=0 u(k)=0;end if s=0 0 0 e=0 0 0 0 0 0 0 elseif s=1 0
13、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 end u=d+e; for k=1:7end for k=1:7 if rem(abs(u(k),2)=1 u(k)=1;end end Data(1+7*(i-1)=e(1); Data(2+
14、7*(i-1)=e(2); Data(3+7*(i-1)=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*(i-1)=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+(i-1)*4)=u(7); end if Data=zeros(1,7*M); m=0,else j,m=find(Data);end disp(第几位错误:); m disp接收到的码字:; disp编码输出序列:; U 运行结果如下:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建体育职业技术学院《治安学》2025-2026学年期末试卷
- 集美工业职业学院《语法学》2025-2026学年期末试卷
- 厦门华天涉外职业技术学院《现代金融统计》2025-2026学年期末试卷
- 骨外科考研试题及答案
- 徐州医科大学《电子测量原理》2025-2026学年期末试卷
- 乳制品充灌工10S执行考核试卷含答案
- 社会经济咨询公司年度工作总结报告
- 金箔制作工风险评估知识考核试卷含答案
- 起重工班组协作考核试卷含答案
- 炭素煅烧操作工QC管理强化考核试卷含答案
- 《销售技巧培训》课件
- 报价旅游合同(2篇)
- GB/T 24067-2024温室气体产品碳足迹量化要求和指南
- DL∕T 5759-2017 配电系统电气装置安装工程施工及验收规范
- 退休返聘劳务合同范本
- 民事检察监督申请书【六篇】
- 湘教版美术五年级下册书包课件
- 肺康复护理课件
- 成人心理健康课件
- 传染病的传播途径和预防控制
- VDA6.5产品审核报告
评论
0/150
提交评论