Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-03-20, 12:20   #1
ctsf5520
初级会员
 
注册日期: 2009-03-12
年龄: 39
帖子: 1
声望力: 0
ctsf5520 正向着好的方向发展
默认 [求助](8,4)汉明码如何进行解码

在利用(8,4)汉明码对信息进行编码后,如何对其进行解码?急急。。。
ctsf5520 当前离线   回复时引用此帖
旧 2009-03-24, 13:39   #2
云龙九现
初级会员
 
注册日期: 2009-03-20
年龄: 42
帖子: 26
声望力: 17
云龙九现 正向着好的方向发展
默认 回复: [求助](8,4)汉明码如何进行解码

我不知道你说的解码指的是什么,是只是接收到码,还是要将码进行检错和纠错?
举个例子吧!
(8,4)汉明码是一个块长度为8,数据占4位的码。
发送:
假设待发送的8位数据块为:00111001。在发送前,我们要处理一下,将这个8位数据块中间插入一些位置,变成12位的。001101000100(汉明码要放置在1,2,4,8位,也就是2的次幂的位置,从右到左)。我们还知道,其中的第10,第9,第7,第3位的值为1(注:第10位对应原来8位数据块的第6位,第9位对应第5位,第7位对应第4位,第3位对应第1位).下面计算校验码。
10对应的4位二进制码为1010,9对应的1001,7对应的是0111,3对应的是0011,将这4个进行异或得到0111.
也即10xor9xor7xor3=0111
这个在matlab中可以通过bitxor(a,b)来实现.
将校验码填入到12位的数据块中的第8,4,2,1位得到发送序列
001101001111
接收:
接收的时候,将1,2,4,8位读出来,形成校验码0111,十进制为7
再将0111与非零的第10,第9,第7,第3位进行异或,也就是
7xor10xor9xor7xor3=0
由于异或之后,结果为0,所以未发生错误。不需要纠错
如果异或之后,结果不为0,比如异或结果为6,那么可以将接受到的数据块的第6位取反就行了。

具体matlab程序如下,以上面为例
接受到的信息为001101001111
设接受到的信息为m,校验码为pc
m='001101001111';
char pc;
pc(1)=m(5);
m(5)='0';
pc(2)=m(9);
m(9)='0';
pc(3)=m(11);
m(11)='0';
pc(4)=m(12);
m(12)='0';
pc_dec=bin2dec(pc);
x=[];
count=0;
for k=12:-1:1
if(m(k)=='1')
count=count+1;
x=[x count];
else
count=count+1;
end
end
pc_dec=bitxor(pc_dec,x(1));
for k=2:length(x)
pc_dec=bitxor(pc_dec,x(k));
end

最后的结果是:pc_dec=0
也就是说传输过程中没有错误。
__________________
不到马里亚纳,不知道大海的深度
不到珠穆朗玛,不知道大山的高度
不到Labfans,不知道自己的无知
云龙九现 当前离线   回复时引用此帖
旧 2011-01-30, 14:24   #3
未注册
游客
 
帖子: n/a
默认 回复: [求助](8,4)汉明码如何进行解码

你那是(12,4)人家要的是(8,4)扩展汉明码
  回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[MATLAB毕业设计] 求助关于绘图时出现的问题 antonia1987 MATLAB论坛 3 2009-05-14 03:33
[MATLAB基础] matlab中for循环语句的问题 fangqing86 MATLAB论坛 3 2009-05-08 23:50
我想问下matlab a和b版本的问题 b181 MATLAB论坛 2 2009-03-24 15:29
请大家帮我实现这样一个等待的功能 jerome_and_angela MATLAB论坛 1 2009-03-20 09:26
opc toolbox 肥肥雪 MATLAB论坛 0 2008-10-06 22:52


所有时间均为北京时间。现在的时间是 22:09


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.