我一直在try 实现一个里德-所罗门编码器,以系统的形式生成码字,消息后面跟着校验符号.为了进行比较,我引用了这篇白皮书:http://www.bbc.co.uk/rd/pubs/whp/whp031.shtml,它对手工计算和LFSR描述非常有指导意义.
对于本白皮书中给出的示例,RS(15,11)码的原始多项式为X^4+X+1,消息为1,2,3,4,5,6,7,8,9,10,11,得到的判断符号为3,3,12,12.
我可以亲自核实.我还使用了Reed Solomon上维基百科文章引用的代码https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders来验证判断符号是否为3,3,12,12.
然而,当我使用Python galois包和这段代码时,我得到了不同的结果.判断符号为11,10,14,6.
import galois
rs = galois.ReedSolomon(15,11, primitive_poly = 19)
GF = rs.field;
## Encode the message
m = GF([1,2,3,4,5,6,7,8,9,10,11])
c = rs.encode(m)
这一结果与MATLAB相吻合.
在reed solomon中,是否有两种不同的算法来编码产生不同校验符号的系统码字?如果没有,哪种方法是正确的?