问题标签 [reed-solomon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
75 浏览

error-correction - 为什么只差错解码对于小奇偶校验具有高误纠率?

我有一个关于本文“通用集成交错代码”中的陈述的问题。论文提到,Reed-Solomon(RS)码的纠删码不会产生误纠,但是如果纠错能力太低,RS码的纯误码解码会产生很高的误码率。

根据我的理解,我认为擦除解码和仅错误解码之间的区别在于擦除解码不需要计算错误位置。另一方面,仅错误解码需要知道错误位置,这可以通过 Berlekamp-Massey 算法计算。我想知道仅错误解码的错误纠正是否来自计算错误的错误位置?如果是,为什么误纠率与RS码的纠错能力有关?

0 投票
1 回答
158 浏览

raid - RAID存储结构

我有一些与 RAID 存储结构有关的问题。首先,让我展示一张 RAID 系统的图片。[RAID][1][1]:https://i.stack.imgur.com/Whd6B.png。据我了解,每个磁盘都被分割成多个条带。编码或解码是沿着条带完成的,条带是条带的集合。假设每个条带由 k 个数据条和 t 个奇偶校验条组成。如果我使用基于 GF(2^w) 构建的 Reed-Solomon (RS) 代码,则每个大小为“q”字节的条带将分为 q/k 个符号,每个符号由 w 位组成。

我的问题:

  1. 当我们谈论 RS 编码/解码时,我们是将每个条带视为一个 RS 符号还是将条带中的每个 w 位视为 RS 符号,尽管条带中的每个 w 位都与 GF 中的相同 w 位元素相乘( 2^w)。描述:
  • 当我在做 RAID 系统的软件实现时,我从每篇研究论文中学到的东西,尤其是这篇论文:“A Performance Evaluation and Exam of Open-Source Erasure
    Coding Libraries For Storage”,是strip, P=[p0,p1,...,p_{t-1}] 计算为矩阵乘法为 P=CxD,其中 D=[d0,d1,...,d_{k-1}] 和C 是 txk 柯西矩阵(我以基于柯西矩阵的编码为例)。
  • 当我阅读另​​一篇专注于 RS 编码的硬件实现的论文时:“A Low Complexity Design of Reed Solomon Code Algorithm for Advanced RAID System”,他们似乎将每个条带称为 RS 符号。我的意思是这怎么可能。假设我们使用 GF(2^8),条带的大小可以变成只有 8 位吗?或者,在硬件实现中,人们只是简单地使用更高阶的有限域来构建 RAID 系统?
  1. 我有时看到人们将 RAID 存储系统描述为驱动器,其中“每个驱动器分为多个条带”。那么,驱动器和磁盘这两个术语有什么区别?它们可以互换使用吗?
0 投票
1 回答
267 浏览

matlab - 用于 BCH 简化二进制版本的 Berlekamp Massey 算法

我试图遵循林,科斯特洛在第 6 章第 210 页中对二进制情况的简化 BM 算法的解释,但没有成功找到错误定位器多项式。我正在尝试像这样在 MATLAB 中实现它:

我想看看出了什么问题,但我做不到。它适用于书中的示例,但并非总是如此。顺便说一句,需要计算差异 S_2mu+3,但是当我只有 24 个校正子系数时,它是如何在步骤 11 中计算的,其中 2*11 + 3 是 25?提前致谢!

0 投票
1 回答
304 浏览

matlab - Matlab - Chien Search 实现初始化

我正在尝试实现 DVBS2 (48408, 48600) BCH 解码器,但在查找定位器多项式的根时遇到了麻烦。对于此处的 Chien 搜索,作者初始化寄存器时考虑到它是从 (2^16 - 1) 中减去 48600 后缩短的。为什么这样?这是我到目前为止的代码:

除了一些错误位置外,它几乎给了我正确的结果。例如:对于位置上的错误

上面的代码给了我

从 48600 中减去后得到:

这是位置负 1,除了 37403,它没有找到。我错过了什么?

编辑:

有问题的代码是 DVBS2 12 纠错 48408、48600 BCH 代码。生成多项式的次数为 192,通过乘以标准文档中给出的 12 个最小多项式得到。

0 投票
1 回答
70 浏览

error-correction - Reed solomon 有多少缺失的字节可以纠正?

我有简单的问题?我有 256 个字节的数据,包括 32 个奇偶校验字节。

如果我只收到 223 个字节,包括 32 个奇偶校验字节。我还能恢复 256 块吗?如果没有,如果我知道丢失字节的位置怎么办?

0 投票
0 回答
19 浏览

qr-code - 在理解 QR 码版本以选择/执行 Reed Solomon 码时遇到问题

我一直在尝试从头开始生成 QR 码。据我所知,到目前为止,我已经成功地生成了一个有效的 Reed Solomon 纠错,例如:

输入:'qwertyuiopasdfghjklzxcvbnmqw'

bin中的误差校正输出:['01110001''0111111''01100101''01110010''01110100'01111001'01111001'011101101''01101001''01111111111111111111110000 '01100111' '01101000' '01101010' '01101011' '01101100' '01111010' '01111000' '01100011' '01110110' '01100010' '01101110' '01101101' '01110001' '01110111' '11111101' '00000000' '00110010 ''00101100''00110000''01101010''11001111''11111010''10010001']

这是一个 37 字节的长度。其中 28 个字节是原始数据,9 个字节是纠错的……我明白了。

我的问题是,如果我想将其输入到 QR 码中,没有正好 37 个字节的版本,我只选择下一个最大的,这样我就可以放入 37 个字节。我是否用空字节填充 QR 码的剩余区域?

0 投票
1 回答
185 浏览

python - 用于大数据的 Python3 的 Reed-Solomon 代码

我正在编写一个代码来使用 Reed-Solomon 代码对10MB 二进制数据进行编码。

但是,该模块会引发有关消息长度的错误,如以下警告。

虽然我试图理解图书馆的代码,但我无法理解代码的目的。

你能帮我解决这个问题吗?

这是我编写以下代码时的Reed-Solomon 模块。

以下代码是我制作的部分代码。

0 投票
1 回答
54 浏览

error-correction - 用于从循环磁带读取的短(7-10 位)窗口读取的纠错码

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

我也尝试过使用 LDPC 和 Hamming 码,但它们会恢复所有消息,因此没有内置的健全性检查可用于检测消息的起点。

0 投票
1 回答
37 浏览

reed-solomon - 为 reed-solomon 编码选择伽罗瓦域

当使用 reed-solomon 算法对任意大小的任意消息进行编码时,是什么决定了 galois 域的大小?是符号大小,还是消息的大小?

例如,如果我要对 ASCII 字符进行编码,并且我使用 GF(2^8),因为 ASCII 是 8 位,我最终会得到 2^8 - 1 = 255 个 ASCII 字符的最大码字长度。然后我必须将消息拆分为长度为 255 的子消息。

或者,如果我使用 GF(2^s) 使得 2^s - 1 >= 消息的长度,则无需拆分消息,但在这种情况下,即使我正在编码 8 位的 ASCII 字符,码字中的每个符号将被视为 2^s 位。

哪个是首选?还是有什么其他因素决定了伽罗瓦场的选择?

0 投票
1 回答
52 浏览

python - 有没有办法概括这个 Reed-Solomon 编码器/解码器?

我正在尝试使用库https://github.com/lrq3000/unireedsolomon在 GF(8) 上构建具有原始多项式 0x3f3 (1+x+x^3) 的 [7,4,4] RS 代码

使用命令初始化编码器时

我收到以下错误:

该库用于在 GF(16) 上生成通常的 (255,223) RS 代码,在尝试概括这一点时似乎效果不佳,有人知道吗?(函数在存储库中的文件“rs.py”中找到)