Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 里德-所罗门纠错码Schifra库中生成器多项式索引的理想值是多少?_C++_Error Correction_Reed Solomon - Fatal编程技术网

C++ 里德-所罗门纠错码Schifra库中生成器多项式索引的理想值是多少?

C++ 里德-所罗门纠错码Schifra库中生成器多项式索引的理想值是多少?,c++,error-correction,reed-solomon,C++,Error Correction,Reed Solomon,我正在尝试在项目中使用。我没有关于Reed Solomon代码和Galois field如何工作的背景。我很难计算16位符号(字段描述符)的生成器多项式索引的理想值 我的代码适用于索引0和许多其他文件。我已经尝试了索引的所有值。该代码适用于很多情况(精确地说是0-32724和32779-65485),但 问题 最理想的价值是什么 如果我切换到另一个索引值(该值也可以工作,但并不理想),会发生什么变化 我的其他发现: 字段\描述符=符号大小(位/符号) 代码长度(符号总数(数据符号+纠错代码符号

我正在尝试在项目中使用。我没有关于Reed Solomon代码和Galois field如何工作的背景。我很难计算16位符号(字段描述符)的生成器多项式索引的理想值

我的代码适用于索引0和许多其他文件。我已经尝试了索引的所有值。该代码适用于很多情况(精确地说是0-32724和32779-65485),但

问题
  • 最理想的价值是什么
  • 如果我切换到另一个索引值(该值也可以工作,但并不理想),会发生什么变化
  • 我的其他发现:
    • 字段\描述符=符号大小(位/符号)

    • 代码长度(符号总数(数据符号+纠错代码符号))=2^符号大小-1(库仅支持此代码长度值)

    • 生成器\u多项式\u根\u计数=fec\u长度(冗余或纠错符号数)

    • 错误以符号而非位来测量,即特定符号中的1个不正确位计为1个错误。但即使所有16位都不正确;它将计为1个错误(不是16个)

    • 可纠正的最大错误数和擦除数应符合以下不等式:2*num_错误+num_擦除数
    如果我哪里弄错了,请纠正我

    const std::size_t field_descriptor                =   16;
    const std::size_t generator_polynomial_index      =  index;
    const std::size_t generator_polynomial_root_count = 50;
    
    /* Reed Solomon Code Parameters */
    const std::size_t code_length = 65535;
    const std::size_t fec_length  =  50;
    const std::size_t data_length = code_length - fec_length;
    
    /* Instantiate Finite Field and Generator Polynomials */
    const schifra::galois::field field(field_descriptor,
    schifra::galois::primitive_polynomial_size14, schifra::galois::primitive_polynomial14);
    
    生成器多项式指数的理想值是多少

    可能没有“理想”值

    我必须查看github代码以确定生成器字段索引是生成器多项式的第一个连续根的日志

    通常索引为0(第一个连续根==1)或1(第一个连续根==Alpha(字段原语))。选择index=1用于“狭义”代码。它稍微简化了Forney算法。链接到wiki文章,其中“c”表示第一个连续根的日志(它将根列为a^c,a^(c+1),…):

    为什么要使用狭义代码:

    对于硬件,可以通过使用自倒数生成器多项式来减少唯一系数的数量,其中选择第一个连续根,以便生成器多项式的形式为:1x^n+ax^(n-1)+bx2^(n-2)+……+b x^2+a x+1。对于GF(2^16)中的32个根,第一个连续根是alpha^((65536-32)/2)=alpha^32752,最后一个连续根是alpha^32783。注意,这仅适用于二进制字段GF(2^n),而不适用于非二进制字段,如GF(929)(929是素数)。这个问题显示了一个不包括32752的索引范围;如果32752不适用于此库,则是由于库中的某些限制,而不是使用Reed-Solomon纠错算法

    除了这3种情况,index=0、1或自倒数生成器多项式,我不知道有什么理由选择不同的索引。索引的选择不太可能对尝试解码超出正常限制产生任何影响


    可纠正的最大错误数和擦除数应符合以下不等式:2*num_错误+num_擦除数 那应该是

    2*num_errors + num_erasures <= fec_length
    
    2*num\u错误+num\u擦除