![]() |
1
7
如果错误率是50%,那基本上就是随机噪声,不是吗?我的意思是,试着发送一个比特。如果你发一封信 正确位的流,错误率为50%,无论正确位是1还是0,都会得到半个1和半个0。 如果它实际上小于50%(例如,50%的位将是“随机”的,而不是“翻转的”),那么您可以重复数据-将每个位传输128次,并计算出每接收100位您得到的更多。这是一个简单的代码,效率极低,根本不是数学的解决方案:) |
![]() |
2
3
Reed-Solomon纠错的要点是,大多数真实世界的错误都是突发性的,所以需要对数据进行交织和去交织。如果您的错误是完全随机的,即泊松分布,那么只需以简单、数学上有效的方式向流中添加冗余即可。你可以看一看某种隐马尔可夫模型,比如 trellis code. 另外,请看一下 noisy channel coding theorem. 严格地说,它不适用于数字数据,但如果这些位的来源是某个模拟过程,或者您可以对位进行建模 犹如 |
![]() |
3
2
在您的问题中,您可能已经排除了这一选项,但是更好的编码方案可能基于数据流本身的相对存在(或不存在)。换言之,要传输一个二进制的…发送一个1/0的交替流。若要发送零,请不发送任何内容,或者发送恒定级别。其思想是发送(和接收)任何东西都代表一种状态,发送(和接收)任何东西都不代表另一种状态。这实际上类似于一种 bipolar encoding 数据的完整性。 |
![]() |
4
1
不 假设通道具有非零容量! 随机化 |
![]() |
5
1
翻转率必须低于50%,才能使任何方案起作用。当然,它可能高于50%,但是您可以首先反转流,然后像错误率低于50%那样处理它。 如果错误是完全随机且非常频繁的(例如,25%的位被翻转),则很难提出稳健的错误检测方案。您需要添加大量冗余。 |
![]() |
6
0
你研究过涡轮代码吗?
啊!我把它误读为50%的随机化,而不是50%的翻转。 |
![]() |
7
0
确切地 在任何给定的传输中,50%的位被翻转,而不是每个位都以50%的概率翻转,您可以通过发送两个位的传输来发送一位信息——发送0作为00,发送1作为01。如果接收到的码字的第一位是1,则另一位是不重叠的。 |
![]() |
Bfyuvf · 直接输入二进制可能的C++[重复] 2 年前 |
![]() |
Mohammed Hashayka · 二进制/CRC分割余数 7 年前 |
![]() |
Daniel · 如何以二进制流格式解析OpenFoam多边形网格? 7 年前 |
|
Reddy90 · 计算二进制表示形式正好需要数字1的数字 7 年前 |