如何检测Reed-Solomon代码的错误?

时间:2015-09-02 14:20:09

标签: decoding reed-solomon

我正在使用(7,5)Reed-Solomon纠错码。

我想我可以解码"纠正1错误"或者"找到2个错误位置"。

然而,有一个问题。我的代码找不到2个错误位置。

例如,消息为1 3 5 2 1,RS奇偶校验为0 5.因此RS代码为0513521。

之后,奇偶校验部分有两个错误。因此代码更改为1113521。

我想找到这两个错误,但我的解码器说答案是1113621。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

RS(7,5)可以纠正1个错误或检测最多2个错误,但不能确定2个错误的位置。在两个错误情况下,存在2个错误值和2个错误位置的多个组合,这两个错误值产生相同的2个校正子。使用您的示例,两个错误情况1113521(位置0和1中的错误)和0463521(位置1和2中的错误)产生相同的结果:syndrome_1 = 4和syndrome_2 = 6,并且无法确定错误的位置,只有他们存在。

如评论所述,如果在2错误情况下尝试进行1次纠错,则解码器可能会错误纠正并产生第三个错误,以便创建“有效”代码字,在这种情况下,它创建了1113621我用我的测试程序得到了相同的结果。

问题是缺少信息,基于该示例,它使用GF(8)= GF(2 ^ 3),模x ^ 3 + x ^ 2 + 1(十六进制d),并且生成多项式=(x -2)(x-4)= x ^ 2 + 6 x + 5.注意GF(2 ^ m),加法和减法都是xor。数据首先显示最低有效期,因此0513521 = 0 + 5x + 1x ^ 2 + 3x ^ 3 + 5x ^ 4 + 2x ^ 5 + 1x ^ 6.