问题标签 [hamming-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
80 浏览

python - Python 代码在 print 语句期间/之后停止输出,但同一部分代码在作为自己的程序隔离时可以工作。这是怎么回事?

我正在尝试在 Python 中实现我自己的具有校验的汉明代码版本(如图所示除了我开始从左到右而不是从右到左计算位)。

我的代码如下:

在这种情况下传输的码字是 1100011。

序数位置为 2 的幂(1、2、4、8)的每个位都是一个校验位,并强制对包括其自身在内的某些“集合”位进行奇偶校验。奇偶校验可能被强制为偶数或奇数。

一个数据位有助于将其分解为 2 的幂和中的所有位的奇偶性。例如:
3 = 2 + 1
7 = 4 + 2 + 1
11 = 8 + 2 + 1
列出这些:
1 由 3、5、7、9、11
贡献 2 由 3、6 贡献, 7, 10, 11
4 由 5, 6, 7
贡献 8 由 9, 10, 11 贡献
然后我们将数据位放在它们的位置并计算每个校验位。
例如,对于 1100011,使用校验:
在此处输入图像描述

1 由 3、5、7、9、11 贡献,如果我们查看这些位进行检查 1,我们在位 3、5 和 11 处有一个 1,这是奇数 (1 + 1 + 1 = 3 ),所以因为我们想要偶校验,所以我们将位 1 设置为 1。跳到 8,我们看到 8 是由 9、10、11 贡献的,如果我们查看这些位以进行检查 4,我们有一个 1在第 10 位和第 11 位,这是偶数 (1 + 1 = 2),所以由于想要偶校验,我们将第 8 位设置为 0。这就是我们得到 11111000011 的方式。

上面的代码应该从输入 1100011 生成 11111000011。

正如您在代码中看到的,我添加了一堆用于调试的打印语句。问题是这个python代码只是随机停止输出任何东西

如此处所示:

在此处输入图像描述

它只是卡在那里。

这很令人困惑,因为如果我只执行包含此打印语句的部分代码,它似乎可以正常工作:

在此处输入图像描述 在此处输入图像描述

我才刚刚开始学习 Python,所以我真的不知道出了什么问题。为什么我的代码不起作用,我该如何解决?


编辑1

正如蒂姆·罗伯茨(Tim Roberts)建议的那样,我想我用 修复了缩进错误z <<= 1,但现在我又遇到了另一个错误。

错误:

同样,另一个程序没有此错误:


编辑2

错误:


编辑3

好的,我想我明白了!

输出:

...跳到8 == 8

所以我们有 11111000011,根据需要!


编辑4

我清理了最后一部分,将其改回

这似乎清理了输出:

0 投票
0 回答
123 浏览

c - 如何将汉明码 (7, 4) 重写为 (63, 57)

我发现汉明码 (7, 4) 我猜...但是如何将其重写为 (63, 57)。如果我有 (7, 4) 我输入 4 位(3 个冗余位)。所以在 (63, 57) 我必须输入 57 位?(从键盘?)(6 个冗余位)我找到的代码:

0 投票
0 回答
49 浏览

c# - 汉明码 - 纠错纠正消息位而不是控制位

您好,我无法在实现汉明代码的代码中查明错误。基本上它的作用是:获取一条消息(比如说ASCII a:01100001)将它乘以矩阵H,从而为该消息生成控制位(奇偶校验位)。我们这样做是为了确保如果某些位(在我的情况下最多 2 位)传输错误,它仍然可以成功解码。我的矩阵 H 是 8x16。所以编码的消息看起来像:0110000110011110(0-7 位是消息位,8-15 位是控制位)

...

如果我在控制位中有 2 个错误,那么理论上我的代码无法解码消息。如果消息位中有 2 个错误,则它会成功解码。如果任何地方出现 1 个错误,它也会成功解码。当我在说索引 14 和 15 中更改两位时,它会检测到索引 6 和 7 中的错误。我认为我的错误在这个函数的某个地方:

您可以在我的 github 上找到完整代码:https ://github.com/janwadolowski/Telecommunication-hamming-code/blob/master/TiPS_1/TiPS_1/Logic.cs

我花了很多时间研究这个函数,以至于我不能再批判性地思考这段代码了。

0 投票
1 回答
54 浏览

error-correction - 用于从循环磁带读取的短(7-10 位)窗口读取的纠错码

我有一个写在循环磁带上的 N 位数组。我从磁带上的一个随机位置开始读取一系列 M 个符号。我正在考虑 Reed Solomon 纠错尝试所有可能的消息起点,但至少所有 RS 实现都使用字节。这是一个实现问题还是 RS 需要在 Galois 领域具有一定的能力并且不能使用更小的尺寸?

我也尝试过使用 LDPC 和 Hamming 码,但它们会恢复所有消息,因此没有内置的健全性检查可用于检测消息的起点。

0 投票
0 回答
46 浏览

c++ - 为什么我的 C++ Hamming 代码在第一次输出后崩溃?

我刚开始学习c++。我已经开始编写用于创建汉明码的代码,但我仍处于编写代码的最开始阶段。我测试了到目前为止的内容,并且在询问用户“输入位数:”后我的代码崩溃了。我将不胜感激为什么它会这样做:) (PS。这段代码仍然不完整)

0 投票
0 回答
143 浏览

parity - 奇偶校验的汉明码计算

考虑二进制数据 10101011。确定汉明码以通过网络传输数据。您需要显示所有步骤,包括奇偶校验位的奇偶校验位的计算。

0 投票
1 回答
42 浏览

c++ - 我在使用 C++ 将 12 转换为汉明代码时遇到问题

我在将 12 转换为汉明码时遇到问题。我已经验证它正确地将数字转换为二进制(base-2),现在当我尝试使用公式正确转换安全位时,它给了我一个与我应该得到的不同的答案。

二进制 = 0001100

12 = 1001100(是我得到的)应该是= 0111100(来自我的教授提到的)

0 投票
0 回答
29 浏览

matrix - 如何在 Galois 域 GF(3) 上使用带有 12x3 矩阵的汉明码来求解 [谜题:岛上的 12 个人]

这个问题就像这篇文章的标题一样。任何提示或解释,甚至学习资源的链接都将不胜感激。 视频链接:岛上的 12 个人

*nb虽然我的数学水平只有12年级,但我真的很想学习使用汉明码矩阵来解决这个问题

0 投票
2 回答
158 浏览

algorithm - 具有高弹性的小消息(8位)纠错,最好的方法是什么?

我需要在 32 位的 8 位消息上实现 ECC 算法,以便与 (32, 8) 一起使用,对于 ECC 来说是新手和里德所罗门。鉴于我需要我的消息平均能够适应 4-8 次随机位翻转,因此我忽略了 Hammings 并研究了 Reed,但是,在将其应用于我的问题之后,我意识到它也不适合我的用例,因为虽然整个符号(8位)可以翻转,因为我的错误倾向于分散(平均),它通常只能修复一个错误......

因此,最后我只是满足于我的第一直觉,就是像这样复制数据:

这样,通过从编码消息中获取每个实际位上最突出的位,每个位都可以恢复到 1 个错误(所有位为 8 个),并且每个位都可以受到两次位翻转,同时仍然检测到有错误(即也可用于我的用例,例如:input 45: return [45, 173]仍然有用)。

那么我的问题是是否有更好的方法,虽然我很确定有,但我不确定从这里去哪里。

通过“更好的方法”,我的意思是在 (32, 8) 比率下对更多错误具有弹性。

0 投票
0 回答
39 浏览

algorithm - 编码算法如何处理单独的位块

我正在学习汉明码是如何工作的。在低级编码/解码中,分离代码块的协议是什么?假设您有一个 (15, 11) 汉明码块,您是否在中间添加了额外的位来分隔它们?另外,如果在最后一个街区有多余的空间怎么办?