循环磁带中短7-10 位窗口读取的纠错码

问题描述

我在循环磁带上写了一个 N 位数组。我从磁带上的一个随机位置开始读取一系列 M 个符号。我正在考虑尝试所有可能的消息起点的 Reed Solomon 纠错,但至少所有 RS 实现都使用字节。这是实现问题还是 RS 在 galois 域中需要一定的功率并且不能在较小的尺寸下工作?

我还尝试使用 LDPC 和汉明码进行试验,但它们会恢复所有消息,因此没有内置的完整性检查可用于检测消息的起点。

解决方法

在 GF(2) 的情况下,使用 BCH 纠错码,其中数据和奇偶校验是单个位,但纠错过程会生成校验子,这些校验子是 GF(2^n) 的元素,其中 n 的选择基于要纠正多少位和消息大小(包括奇偶校验位)。

https://en.wikipedia.org/wiki/BCH_code

wiki BCH 代码文章没有提到 Berlekamp Massey 或 Sugyama 扩展的 Euclid 方法也可用于将综合征转换为错误定位多项式。这些在 RS 文章中进行了解释。由于符号是单个位,错误值总是 == 1 并且不需要计算:

https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction#BCH_view_decoders


RS 纠错码在 GF(p^n) 的有限域内操作,其中 p 是任意素数且 n >= 1,有 p^n 个可能的符号,包括奇偶校验符号的最大消息长度为 p^n -1 对于典型的“BCH 视图”RS 实现。或 p^n 用于不太流行的“原始视图”实现。

https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction#Constructions

您可以为 RS 代码使用较小的字段,例如 GF(2^3)(3 位符号),“BCH 视图”RS 的最大消息大小为 7 个符号,包括奇偶校验。使用 GF(2^4) 将其增加到 15 个符号,GF(2^5) 增加到 31 个符号,...