0

我正在尝试使用库https://github.com/lrq3000/unireedsolomon在 GF(8) 上构建具有原始多项式 0x3f3 (1+x+x^3) 的 [7,4,4] RS 代码

使用命令初始化编码器时

coder = rs.RSCoder(7,4, prim = 0x3f3, c_exp = 3)

我收到以下错误:

Traceback (most recent call last):
  File "/home/damuna/HACKATHON/RS.py", line 174, in <module>
    coder = rs.RSCoder(7,4,prim=0x3f3, c_exp = 3)   
  File "/home/damuna/.local/lib/python3.8/site-packages/unireedsolomon/rs.py", line 89, in __init__
    init_lut(generator=generator, prim=prim, c_exp=self.gf2_c_exp)
  File "/home/damuna/.local/lib/python3.8/site-packages/unireedsolomon/ff.py", line 154, in init_lut
    logtable[x] = i
IndexError: list assignment index out of range

该库用于在 GF(16) 上生成通常的 (255,223) RS 代码,在尝试概括这一点时似乎效果不佳,有人知道吗?(函数在存储库中的文件“rs.py”中找到)

4

1 回答 1

1

代码应该是:

coder = rs.RSCoder(7,4, prim = 0xb, c_exp = 3)  # all numbers are powers of 3

该代码还可以将 2 定义为原始元素:

coder = rs.RSCoder(7,4, prim = 0xb, c_exp = 2)  # all numbers are powers of 2

0x3f3 = 0x3 * 0x3 * 0x3 * 0xb * 0xb(二进制 GF(2) 数学)并且不代表可用于 GF(512) 的不可约多项式。这可能是导致错误的原因。

RS(255,...) 需要 GF(256) 或更大。

于 2021-05-29T14:52:16.657 回答