里德所罗门纠错和误报



我有一个Reed-Solomon编码器/解码器。在处理数据和评估结果后,我经历了以下3种情况:

  1. 解码器正确解码消息,不会引发错误
  2. 解码器将消息解码为错误的结果,而没有抱怨——有效地产生了假阳性。这种可能性应该很低,但即使被操纵的数据数量远低于纠错能力,也可能发生(即使在更改了一位之后…(
  3. 如果操作的数据比其纠错能力所允许的数据多,解码器就会失败(抛出错误(

对于一个合适的Reed-Solomon解码器,这三种情况都有效吗?我特别不确定情况2,解码器会产生错误的结果(而不会抛出错误(,即使错误比其校正能力允许的要少得多。。。?

  1. 纠错能力不足

这表示代码中存在错误。如果存在小于⌊(n-k(/2⌋的错误,RS解码器应该永远不会失败。

  • 校正检测何时存在比纠错能力更多的错误
  • 即使存在超过⌊(n-k(/2⌋的错误,RS解码器仍有很好的机会检测到不可校正的错误,因为大多数错误模式不会导致接收到的码字在有效码字的𕯮。超过⌊(n-k(/2⌋错误的误校正涉及解码器创建额外的\8970\(n-k(/2𕯯或更少的错误符号,从而产生有效的码字,但与原始码字相差n-k+1个或多个符号。

    检测不可纠正的错误可以通过为已纠正的码字重新生成综合症来完成,但在求解错误定位多项式时(通常通过循环所有可能的定位值来完成(,当由于重复或缺失根而产生的定位符比应该产生的少时,通常会更快地发现错误。

    我用C语言为4位和8位字段编写了一些交互式RS演示程序,其中包括3个最常见的解码器(PGZ(矩阵(、BM(差异(、SY(扩展欧几里得((。请注意,在我的例子中,SY扩展的欧几里得解码器模拟了一个面向硬件寄存器的解决方案,两个寄存器,总是向左移位,每个寄存器保存两个多项式,其中分割与寄存器一起向左移位。每个寄存器的右半部分被反转(最低有效系数优先(。维基文章的例子可能更容易理解。

    http://rcgldr.net/misc/eccdemo4.zip

    http://rcgldr.net/misc/eccdemo8.zip

    最新更新