Berlekamp-Massey算法不适用于综合征的最低有效符号为0

时间:2018-10-29 10:30:22

标签: reed-solomon forwarderrorcorrection

Berlekamp-Massey algorithm

我正在尝试在上图中实现此算法。 Berlekamp-Massey算法解决了RS(n,k)系统中的以下问题:给定校验子多项式

  

S(z)= {S(n-k-1),........ S(2),S(1),S(0)}

,找到最小度误差多项式。该算法适用于所有综合症,但当S(0)变为0时,错误多项式不正确。提到的算法有什么遗漏吗?

1 个答案:

答案 0 :(得分:1)

什么时候失败?是不是无法生成错误定位器多项式,还是创建了没有正确根的多项式,还是后来失败了,例如Forney算法?

我不确定您在问题中是否真正表示S(0)。大多数文章将S(j)定义为元素之和乘以(alpha ^ j)的连续幂(位置)。如果首个连续根= FCR = alpha ^ 0 = 1(g(x)=(x-1)(x-alpha)(x),则解码器使用的校正子必须基于生成多项式的根,这一点很重要-alpha ^ 2)...),使用S(0)至S(nk-1),或者FCR = alpha(g(x)=(x-alpha)(x-alpha ^ 2)...) ,请使用S(1)至S(nk)。

尽管校正子为零,但只要校正子不太多(这表示不可纠正的错误),任何RS解码器都可以工作。

Wiki文章使用示例代码对算法进行了更简单的描述。请注意,它使用lambda(Λ)代替sigma(σ)来表示错误定位器多项式。该描述是针对示例代码的,在这种情况下,取决于FCR(未提及),S [0]可能表示S(0)或S(1)。

https://en.wikipedia.org/wiki/Berlekamp%E2%80%93Massey_algorithm

我还编写了针对4位和8位字段的交互式RS程序,其中包括Berlekamp Massey作为程​​序中实现的三个解码器之一。这些程序允许用户将FCR指定为1或2,除非选择了自反多项式(用于简化硬件编码器的非常用选项)。在这些示例程序中,多项式通常首先存储最高有效项(遗留问题),因此代码将数组移位以对其进行处理。

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

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


我修改了我的一个ecc演示程序之一,以便与GF(2 ^ 10)一起使用。我运行了您的测试用例:

S[...] = {0000 0596 0302 0897}   (S[0] = 0)

这些是我为BM解码器获得的迭代和多项式:

k      d    σ

0   0000    0001
1   0596    0596 x^2 + 0000 x + 0001
2   0302    0596 x^2 + 1006 x + 0001
3   0147    0585 x^2 + 1006 x + 0001

根是:

383 = 1/(2^526) and 699 = 1/(2^527)

琐事,通过反转系数,可以得到定位符而不是其反函数:

 0001 x^2 + 1006 x + 0585 : roots are 346 = 2^256 and 692 = 2^257

请注意,如果使用Forney来计算误差值,则Forney需要不可逆的多项式。