我有一个Reed-Solomon编码器/解码器。在处理数据并评估结果之后,我经历了以下3种情况:
对于适当的Reed-Solomon解码器,所有3种情况都有效吗?我对情况2尤其不确定,解码器会产生错误的结果(而不会引发错误),即使错误的数量比其校正能力所允许的少得多……?
答案 0 :(得分:1)
- 错误校正能力以下的错误校正
这将指示代码中的错误。如果错误少于(n-k)/2⌋个,则RS解码器将永远不会失败。
- 更正功能会检测出何时有更多的错误,然后才有错误更正功能
即使存在多于⌊(nk)/2⌋个错误,RS解码器也很有可能仍会检测到不可纠正的错误,因为大多数错误模式不会导致接收到的码字在⌊( nk)/ 2或更少的有效码字错误符号,因为工作的RS解码器应仅产生有效码字或指示不可纠正的错误。对超过⌊(nk)/2⌋个错误的错误校正涉及解码器创建额外的⌊(nk)/2⌋个错误符号或更少个错误符号,从而产生有效的码字,但与原始码字的差为n-k + 1或更多符号。
可以通过为校正后的码字重新生成校正子来检测无法纠正的错误,但是通常在解决错误定位器多项式时通常会更快地发现错误(通常通过遍历所有可能的定位器值来完成),此时生成的定位器少于应有的数量复制或缺少根。
我用C语言为4位和8位字段编写了一些交互式RS演示程序,其中包括3种最常见的解码器(PGZ(矩阵),BM(差异),SY(扩展的Euclid))。请注意,在我的示例中,SY-扩展的Euclid解码器模拟了面向硬件寄存器的解决方案,两个寄存器始终向左移动,每个寄存器都包含两个多项式,其中拆分与寄存器一起向左移动。每个寄存器的右半部分反转(最低有效系数在前)。 Wiki文章示例可能更容易理解。