我不知道该寻找什么,因为使用“错误校正码”只得到与你不知道错误位置相关的内容。因此,这些代码比我需要的复杂和低效。
请注意以下内容:在此处,"bits" 等于 "packets" (因为只有整个包可以丢失,因此比特类比非常合适)。
是否有纠错编码可以考虑您已经知道哪些"k"位缺失,并且仅提供重构数据流在这些"k"处的方法?此外,ECC添加的比特应独立(最好)。如果数据的ECC部分发生丢包,它仍然可以重构一些原始数据(并非总是会有k个错误,大多数情况下没有任何错误。因此,ECC对其自身添加的ECC比特具有容错性很重要)。
在我看来,这是一个很大的区别。对于一个丢失的比特,很简单,我只需使用一个异或比特即可。但是我不聪明到可以将其推广到n比特。
所以,再次强调,我有一个包含n比特的数据流,并且我知道最多有k比特丢失(我确实知道哪些比特丢失了,不可能出现损坏)。现在我需要一个编解码器,可以通过尽可能少地添加开销到数据流中来重构它们。我梦想着有(n+k)比特来修正n位数据流中的k个随机比特错误 : )。此外,如果ECC添加到n比特数据流中的任何这些k比特被损坏,例如c个k位比特被损坏,则仍应能够重构n比特数据流中的(k-c)比特错误。
请注意我当然不知道错误位置 :)
示例:
我可以想到的一种算法是这样的。要保护免受错误影响的n比特数据流。
让p成为相对素数最小的n。然后通过i = (p * j) mod n迭代数据流,通过选择每个偶数j的位异或子流来逐渐增加j。这个子流具有n/2个元素。迭代之后,我们已经获得了n/2个元素的奇偶校验。我们可以以同样的方式获取另一半的奇偶性(采用奇数j)。
这将为2比特丢失提供50%的错误减少。
好消息是我们现在可以变得任意更好。只需取下一个较高的相对素数再重复一次。现在我们的错误率为25%。基本上,每次添加两个附加的奇偶校验比特时,我们可以将错误率减半。
请注意以下内容:在此处,"bits" 等于 "packets" (因为只有整个包可以丢失,因此比特类比非常合适)。
是否有纠错编码可以考虑您已经知道哪些"k"位缺失,并且仅提供重构数据流在这些"k"处的方法?此外,ECC添加的比特应独立(最好)。如果数据的ECC部分发生丢包,它仍然可以重构一些原始数据(并非总是会有k个错误,大多数情况下没有任何错误。因此,ECC对其自身添加的ECC比特具有容错性很重要)。
在我看来,这是一个很大的区别。对于一个丢失的比特,很简单,我只需使用一个异或比特即可。但是我不聪明到可以将其推广到n比特。
所以,再次强调,我有一个包含n比特的数据流,并且我知道最多有k比特丢失(我确实知道哪些比特丢失了,不可能出现损坏)。现在我需要一个编解码器,可以通过尽可能少地添加开销到数据流中来重构它们。我梦想着有(n+k)比特来修正n位数据流中的k个随机比特错误 : )。此外,如果ECC添加到n比特数据流中的任何这些k比特被损坏,例如c个k位比特被损坏,则仍应能够重构n比特数据流中的(k-c)比特错误。
请注意我当然不知道错误位置 :)
示例:
我可以想到的一种算法是这样的。要保护免受错误影响的n比特数据流。
让p成为相对素数最小的n。然后通过i = (p * j) mod n迭代数据流,通过选择每个偶数j的位异或子流来逐渐增加j。这个子流具有n/2个元素。迭代之后,我们已经获得了n/2个元素的奇偶校验。我们可以以同样的方式获取另一半的奇偶性(采用奇数j)。
这将为2比特丢失提供50%的错误减少。
好消息是我们现在可以变得任意更好。只需取下一个较高的相对素数再重复一次。现在我们的错误率为25%。基本上,每次添加两个附加的奇偶校验比特时,我们可以将错误率减半。