matlab如何产生汉明码的信息位,通信工程基于matlab的(7_4)循环码和(7_4)汉明码的编程设计.doc...

您所在位置:网站首页 > 海量文档

&nbsp>&nbsp计算机&nbsp>&nbsp软件工程

7e3e25dd1884ce9b7725a69a698d5758.gif

通信工程基于matlab的(7_4)循环码和(7_4)汉明码的编程设计.doc15页

本文档一共被下载:2377011b61454b208b34ad77b4c31088.gif次,您可全文免费在线阅读后下载本文档。

072ad097814a33d1ad18e33ca14a5a9e.png

9ec2792a743ebdf4575ee09a03c275ea.png

7af312d1be2cfc1e59f15880bb7a7e7a.png

5f207613e329ca76dc87c76d3ff77e64.png

adf7aa3071c520b8a2063089f549261c.png

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

2.该文档所得收入(下载+内容+预览三)归上传者、原创者。

3.登录后可充值,立即自动返金币,充值渠道很便利

实验设计

实验一:(7,4)循环码的编码与译码

1.实验编码原理: 根据循环码的代数性质建立系统编码的过程,可以把消息矢量用如下多项式表示:

要编码成系统循环码形式,把消息比特移入码字寄存器的最右边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)=

2.实验译码原理:译码的实验原理 g(x)= ,在(n,k)循环码中,由于g(x)能除尽,因此可分解成g(x)和其他因式的乘积,记为

即可写成

即h (x) =

则 = ,其中式h(x)的逆多项式。

监督矩阵多项式可表示为

3.(7,4)循环码的编码(4位)的程序:

clear;

clc;

a=input('请输入消息矢量:');

%高次项系数在前的生成多项式

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)),2)==0

b(i)=0;end

end

for i=1:7

if rem(abs(b(i)),2)==1

b(i)=1;end

end

disp('输入序列:');

a

disp('编码输出序列:');

b

程序运行结果为:

改变输入序列

运行结果的编码如下:

序号输入序列输出序列序号输入序列输出序列10000 000 000091000110 100020001101 0001101001011 100130010111 0010111010001 101040011010 0011121011100 101150100011 0100131100101 110060101110 0101141101000 110170110100 0110151110010 111080111001 0111161111111 11114.相对应的译码和纠错(7位)程序:

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

s(i)=1;end

end

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];

end

u=r+e;

for i=1:7

if rem(abs(u(i)),2)==0

u(i)=0;end

end

for i=1:7

if rem(abs(u(

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名:

验证码:

c9f2bced460b0329ba0aadbbc3f0fc71.png

匿名?

发表评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值