我正在使用 (7,5) Reed-Solomon 纠错码。
我想我可以解码“纠正 1 个错误”或“找到 2 个错误位置”。
但是,有一个问题。我的代码找不到 2 个错误位置。
例如,消息为 1 3 5 2 1,RS 奇偶校验为 0 5。所以 RS 代码为 0513521。
之后,奇偶校验部分有两个错误。所以代码改为1113521。
我想找到这两个错误,但是我的解码器说答案是1113621。
我应该怎么办?
我正在使用 (7,5) Reed-Solomon 纠错码。
我想我可以解码“纠正 1 个错误”或“找到 2 个错误位置”。
但是,有一个问题。我的代码找不到 2 个错误位置。
例如,消息为 1 3 5 2 1,RS 奇偶校验为 0 5。所以 RS 代码为 0513521。
之后,奇偶校验部分有两个错误。所以代码改为1113521。
我想找到这两个错误,但是我的解码器说答案是1113621。
我应该怎么办?
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 (hex d),生成多项式 = (x-2) (x-4) = x^2 + 6 x + 5。注意对于 GF(2^m),加法和减法都是异或。数据首先显示最低有效项,因此 0513521 = 0 + 5x + 1x^2 + 3x^3 + 5x^4 + 2x^5 + 1x^6。