我在网上找了一个程序进行调试,发现一堆的问题,好在我是个老算法程序员,有能力把程序的错误一一纠正。
在百度输入关键词,然后得到很多搜索结果!
这是被阅读了五千次的帖子!我的天啊,为什么没有人指出程序的错误呢?我现在一边讲解错误一边讲解汉明码的原理。这样才能帮助同学们真正的掌握汉明码编译码!
错误一:编码出错!
为什么第一个是source(i,1),
而后面就是source(1,2)呢?
我们一起来看校验码的生成原理。
通过程序中的关系式就可以得到生成矩阵。
和下面展示的矩阵一致!
最终落实到如何生成校验比特就采用上图!
根据校验矩阵来写出校验码!!!
程序怎么写呢?
% 产生信息序列,100000个码
len = 100000 ;
code = randi([0 1],1,len);
% 产生3bits的校验码
hamming_code = reshape(code,len/4,[]);
for i = 1:len/4
hamming_code(i,5) = xor(hamming_code(i,1),xor(hamming_code(i,2),hamming_code(i,3)));
hamming_code(i,6) = xor(hamming_code(i,2),xor(hamming_code(i,3),hamming_code(i,4)));
hamming_code(i,7) = xor(hamming_code(i,1),xor(hamming_code(i,2),hamming_code(i,4)));
end
文章中理论部分来自于一本经典书籍!学习编解码算法不能没有它!
我现在已经找不到当年我买的那本书了!
太久远的事情了!
下堂课继续分析网络程序的错误!
未完,待续!