【发布时间】:2019-08-29 08:41:55
【问题描述】:
我正在尝试在项目中使用Schifra Reed-Solomon error correcting code library。我没有关于 Reed-Solomon 代码和 Galois 场如何工作的背景。我无法确定 16 位符号(字段描述符)的 generator_polynomial_index 的理想值。
我的代码适用于索引 0 和许多其他索引。我已经尝试了所有索引值。该代码适用于很多人(准确地说是 0-32724 和 32779-65485),但是
问题
- 什么是最理想的值?
- 如果我切换到另一个索引值会有什么变化(这也有效但不理想)?
我的其他发现:
field_descriptor = 符号大小(位/符号)
code_length(符号总数(数据符号+纠错码符号)) = 2^symbol_size - 1(库只支持这个码长值)
generator_polynomial_root_count = fec_length(冗余或纠错符号数)
错误以符号而不是位来衡量,即特定符号中的 1 个不正确位被计为 1 个错误。但即使所有 16 位都不正确;它将计为 1 个错误(不是 16 个)。
可以纠正的最大错误和擦除数应遵循以下不等式:2*num_errors + num_erasures
如有错误请指正
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);
【问题讨论】:
标签: c++ error-correction reed-solomon