一条用 Reed Solomon 代码编码的消息,现在我有了消息+代码字的整个数据。现在在传输过程中,如果消息部分发生变化,则可以解码,但如果代码字本身损坏/更改了怎么办?是否也可以更正代码字?如果可以改正怎么办?还是 Reed Solomon 纠错码本身会负责纠正损坏的代码字?
我有点困惑。我希望我能得到一个相关的答案。提前致谢。
一条用 Reed Solomon 代码编码的消息,现在我有了消息+代码字的整个数据。现在在传输过程中,如果消息部分发生变化,则可以解码,但如果代码字本身损坏/更改了怎么办?是否也可以更正代码字?如果可以改正怎么办?还是 Reed Solomon 纠错码本身会负责纠正损坏的代码字?
我有点困惑。我希望我能得到一个相关的答案。提前致谢。
问题中的术语存在问题。代码字由消息数据加上奇偶校验(冗余)数据(问题称为代码字)组成。此外,术语码字通常意味着没有错误(在消息部分或奇偶校验部分),是生成多项式的精确倍数(多项式与有限域系数相乘)。
在更正期间,无论错误位于消息数据还是奇偶校验数据中都没有关系。只要错误符号的总数小于或等于奇偶符号数量的1/2,那么错误是可以纠正的。Reed Solomon 码有两种类型,“原始视图”和“BCH 视图”,大多数实现是“BCH 视图”。
wiki 文章可能会帮助您理解。
https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
在 wiki 文章的“BCH 视图”部分中:
https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction#Systematic_encoding_procedure
消息被视为多项式 p(x) 乘以 x^t 为 t 个奇偶校验符号腾出空间,余数 sr(x) = p(x)x^t mod g(x),其中 g(x)是生成多项式。码字为 s(x) = p(x)x^t mod g(x) - sr(x)。如果对 Reed Solomon 使用基于二进制的字段,则加法和减法都是异或。
请注意,在其他有关 Reed Solomon 的文章中,通常 t 表示可以纠正的符号数,奇偶校验符号的数量为 2t(或奇偶校验符号的数量为 2t+1)。wiki 文章使用 lambda: Λ 表示定位多项式的系数,而其他文章使用 sigma: σ 表示同一事物。