基本的里德 - 所罗门错误纠正问题

时间:2010-02-26 02:16:02

标签: algorithm error-handling error-correction reed-solomon

Reed-Solomon纠错是否在丢弃字节(或多个丢弃字节)的情况下工作?例如,假设它是一个(12,8)Reed Solomon代码,所以理论上它应该能够纠正2个错误(如果已知位置则纠正4个错误)。但是,如果只接收到11个(或10个)字节,并且一个不知道哪个字节被丢弃,会发生什么? Reed-Solomon会纠错吗?

谢谢,

3 个答案:

答案 0 :(得分:4)

用于擦除的RS解码需要符号“丢弃”或丢失的位置。你所谈论的那种错误是由于相位失真造成的。

答案 1 :(得分:0)

你可以通过简单地在角色可能丢失的位置骑自行车并让它试图纠正你的结果来使它工作,所以让我们说你收到了10个字符:

1234567890

更正以下值:

??1234567890
?1?234567890
?12?34567890
 :
1??234567890
1?2?34567890
 :
1234567890??

每次尝试都可能会给你一些结果,其中大部分都不是你想要的结果。但我希望应该只有最少数量的额外修改才会有一个结果,那应该是你想要用作最有可能正确答案的结果。

例如,如果更正上述示例的前三个数字,则可能会得到以下结果:

    v
361274567890
917234567890
312734569897
 :      ^  ^

对于第一种情况和第三种情况,除了填写两个空格(用v和^标记)之外,还有其他更正,而在第二种情况下,只填充缺少的位置,其他字符与未修正的输入匹配。因此,我会选择答案2作为最可能的答案。

显然,这种情况的可能性取决于是否存在其他错误。不幸的是,我无法为您提供一套严格的条件,以确保此方法可行。

如果您的消息足够长,您可以做的另一件事是使用交错技术基本上有多个正交RS代码覆盖您的数据。这样,如果一个失败,你可能能够用另一个恢复。例如,该方法用于光盘(CD),称为CIRC

答案 2 :(得分:0)

不,Reed-Solomon无法自动纠正丢失位的实例,因为就像大多数其他FEC算法it was only designed to correct bit-flips一样。如果您知道丢失位的位置,则可以在这些位置填充接收到的信号,以便RS可以正常工作。

但是,如果您不知道该位置,则需要使用另一种支持bit-insertion or bit-deletion的算法,例如标记代码和水印代码。

另请注意,RS不仅可用于删除,还可用于process noisy bits using Forney syndrome