Reed-Solomon 纠错是否适用于存在丢失字节(或多个丢失字节)的情况?例如,假设它是 (12,8) Reed Solomon 码,所以理论上它应该能够纠正 2 个错误(如果位置已知,则可以纠正 4 个擦除)。但是,如果只接收到 11(或 10)个字节并且不知道丢弃了哪些字节,会发生什么?Reed-Solomon 纠错会起作用吗?
谢谢,
本
Reed-Solomon 纠错是否适用于存在丢失字节(或多个丢失字节)的情况?例如,假设它是 (12,8) Reed Solomon 码,所以理论上它应该能够纠正 2 个错误(如果位置已知,则可以纠正 4 个擦除)。但是,如果只接收到 11(或 10)个字节并且不知道丢弃了哪些字节,会发生什么?Reed-Solomon 纠错会起作用吗?
谢谢,
本
用于擦除的 RS 解码需要符号“丢弃”或丢失的位置。您正在谈论的那种错误是由于相位失真造成的。
您可以通过简单地循环遍历字符可能丢失的可能位置并让它尝试更正您的结果来使其工作,因此假设您收到 10 个字符:
1234567890
让它更正以下值:
??1234567890
?1?234567890
?12?34567890
:
1??234567890
1?2?34567890
:
1234567890??
每次尝试都可能会给你一些结果,其中大部分都不是你想要的。但我希望只有一个结果,而额外的修改数量最少,这应该是您最想用作正确答案的结果。
例如,如果您更正上面示例的前三个数字,您可能会得到以下结果:
v
361274567890
917234567890
312734569897
: ^ ^
对于第一种和第三种情况,除了填写两个空白(用 v 和 ^ 标记)之外,您还有其他更正,而在第二种情况下,您只填写了缺失的位置,其他字符与未更正的输入匹配。因此,我会选择答案 2 作为最有可能是正确的答案。
显然,这是否有效取决于是否存在其他错误。不幸的是,我无法为您提供一套严格的条件,在这些条件下这种方法肯定会起作用。
.
如果您的消息足够长,您可以做的另一件事是使用交织技术基本上让多个正交 RS 代码覆盖您的数据。这样,如果一个失败了,你也许可以用另一个来恢复。例如,这种方法用于光盘 (CD),它被称为CIRC。
不,Reed-Solomon 无法自动纠正丢失位的实例,因为就像大多数其他 FEC 算法一样,它只是设计用于纠正位翻转。如果您知道丢失位的位置,您可以在这些位置填充接收到的信号,以便 RS 可以正常工作。
但是,如果您不知道位置,则需要使用另一种支持位插入或位删除的算法,例如标记代码和水印代码。
另请注意,RS 不仅可以用于擦除,还可以使用 Forney 综合症处理噪声位。