本文主要是介绍海明不等式推导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
根据教材:
假设传输的数据为:
1001011
在2^n位上不放信息位,放校验位 则
1 | 0 | 0 | 0 | 0 | 1 | 1 |
这样可能还有点难看出规律
但是当校验位达到6位时
表格中n代表的就是校验位
此时校验位和其能校验的最大信息位为:
1->0
2->1
3->4
4->11
5->26
这样校验位和信息位的关系就能看出来了
设校验位的位数为n,其能表示的最大信息位为An
可以推断出An = (2^(n-1))-1+A(n-1)可能在此页面上还很难看出来
下面我将用笔算计算该数列的通项公式:
推导出结果与海明不等式相同
m<=2^k-k-1
至此 海明不等式推导完成 当然是站在先辈们的肩膀上计算的
如有不对,欢迎评论纠正
关于校验码和信息码之间的计算,我还写了一段简单的代码
各位可以试一试:
//传入校验码的位数 返回其可以校验的信息位位数public static int hamming(int k) {int m = 1;if (k > 1) {for (int i = 0; i < k - 1; i++) {m *= 2;}return (m - 1) + hamming(k - 1);} else {return 0;}}
//传入信息位的位数 返回需要的校验位位数public static int reHamming(int m) {for (int i = 0; i < 100; i++) {if (m > hamming(i) && m <= hamming(i + 1)) {return i + 1;}}return 0;}
这篇关于海明不等式推导的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!