问题标签 [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.
binary-data - 实现二进制数据纠错的过程是什么?
我一直在阅读和研究二进制数据中的纠错,但我似乎无法牢牢掌握所使用的步骤。我已阅读https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction及其相关文章,我对所涉及的数学有所了解,但我想彻底了解整个过程。
任何人都可以向我解释或将我链接到一个解释,它会一步一步地告诉我,我是如何从字符串“你好,你好吗?”的二进制表示开始的。( 01001000011001010110110001101100011011110010110000100000011010000110111101110111001000000110000101110010011001010010000001111001011011110111010100111111
) 到具有足够纠错信息的二进制块,以恢复多达 10 个乱码位中的 1 个,然后解释结果并能够确定哪些位是错误的?我可以理解两行代码或数学,所以欢迎任何帮助。谢谢!
reed-solomon - 如何在只有综合症的 Reed-Solomon 中找到可能的错误?
我正在为我正在上的一门课做作业。
如果可能的话,我需要为几个给定的综合症提供代码字错误的位置和幅度。如果我能弄清楚如何为一个人做这件事的方法,我可以做剩下的事情,但我迷失了第一个。
这是综合症: [2, 2, 0, 1]
我将使用 q = 11 和原始元素为 2 的 Reed-Solomon 代码。
我创建了以下 H 矩阵试图解决这个问题:
但由于我只有综合症,我不知道从这里去哪里。我确定我在这里遗漏了一些相当直接的东西,希望有人可以向我指出。
我在网上找到了 Berlekamp、Peterson 和 Euclidean 方法,但我们还没有讨论过这些方法,我不明白它们是如何工作的,从网上有限的解释。我们使用了错误定位多项式方法,但我不知道如何将其应用于这种情况,因为要达到你有 4 个方程和 4 个未知数的地步,你需要知道输入码字。
谢谢你。
encoding - 资源占用少的擦除编码
嘿,我对很多擦除编码概念都很陌生。我大多只读过 Reed-solomon,但它不符合我的需要。
我需要找到一种可以在不占用大量系统资源的情况下在大数据上创建奇偶校验分片的技术。
例如:
我想存储一个 32gb 的视频,分割成 8 个 4gb 的碎片。我想为此创建 3 个奇偶校验分片。我最多不能超过几百 MB 的内存,并且我希望增量创建整个奇偶校验分片,以便我可以将它们写入另一个文件系统,而无需将整个内容存储在内存/本地磁盘上。
是否有擦除编码技术,所以我可以:
- 在不使用大量内存的情况下为大型文件创建奇偶校验分片
- 通过在创建字节时发送字节来增量创建奇偶校验分片并将其分发到另一个系统。
java - Reed-Solomon的第一个ECC总是和xor一样吗?
我目前正在与 reed-solomon 合作。据我了解,第一个纠错码始终与对数据字进行异或运算相同,因为范德蒙德矩阵的第一行始终为 1,并且伽罗瓦域中的元素相加等效于异或。
现在我尝试使用 ReedSolomonEncoder 的 Zxing 3.3.0 实现来获取一些代码字。请参阅 Java 中的以下列表:
这给出了以下输出:
有两种可能:
- 我对 Reed-Solomon 有误解
- 我以错误的方式使用实现(因为 javadoc 写得不好)
或者这是一个错误,我不知何故不相信。
c++ - OMNeT++ cPacket 作为 std::bitset 应用 Reed-Solomon 编码
有一个数据包
我怎样才能获得它的位表示?例如,形式为
我的最终目标是将编码方案应用于数据包,即 Reed-Solomon 编码。
java - 将 MATLAB 的 Reed Solomon 函数移植到 Java
我在 MATLAB 中使用 RS(160,80) 实现了一个简单的 RS 纠错方案。基本流程如下:
我生成一条长度为 80 且每个符号 8 位的消息,并生成长度为 160 的 RS 代码。
生成 RS 代码后,我添加/异或另一个代码长度为 160 的 Galois 字段。(该字段仅包含 00000000 和 00000001)。这是为了模拟在方案中添加错误。这会生成我的嘈杂代码。
现在,我采用另一个 GF 字段(与上面 [00000000 00000001] 的类型相似),它有 < 40 个符号,与我用来创建噪声的符号不同。我在上一步中将其添加/异或到生成的嘈杂代码中。
最后,我通过 RS 解码器运行它,该解码器检索我的原始消息。
我的 MATLAB 函数:
现在我一直在寻找将其移植到 Java 的方法。我查找了库,但我不确定如何准确移植我的特定用例。
Zxing - 仅将 QR 和 Aztec 代码作为输入
Backblaze - JavaReedSolomon - 修复代码擦除,这不是我产生的那种错误,输入是文件的形式(严重混淆这里发生的事情)
简单的 RS 纠错示例- 感觉更清晰,但只接受字符串作为输入。我觉得我可以修改它以适合我的用例,但我不确定如何添加噪音。我不确定如何通过此实现生成 RS(160, 80) 代码,也无法告诉如何生成自定义 GF 字段以添加噪声。
任何帮助将不胜感激(特别是如果您可以向我指出适合我的用例的实现,或者帮助修改上述可行的资源之一)
谢谢!
error-correction - 如果 RS 代码中的纠错码字损坏会发生什么情况
一条用 Reed Solomon 代码编码的消息,现在我有了消息+代码字的整个数据。现在在传输过程中,如果消息部分发生变化,则可以解码,但如果代码字本身损坏/更改了怎么办?是否也可以更正代码字?如果可以改正怎么办?还是 Reed Solomon 纠错码本身会负责纠正损坏的代码字?
我有点困惑。我希望我能得到一个相关的答案。提前致谢。
c++ - 用于 QR 码生成器的 Reed-Solomon 算法
在我的数据结构类中,我想为我的最终项目创建一个二维码生成器。但是,我在理解其中的“格式化纠错”部分时遇到了一些麻烦。我想使用 11(L)的纠错和 100(每隔一行)的掩码模式。由于我是一名本科生,我想尽量让处理版本 1 二维码和使用字节编码保持简单。
然后就是不明白数据输出后怎么想出纠错框。
packet - 使用 Reed-Solomon 实现增量冗余
我一直在学习非常嘈杂的 AWGN 通道的纠错机制。我已经阅读了将 FEC 编码与 ARQ 系统结合使用的混合 ARQ 系统,这听起来像是此类通道的一个很好的起点。
我正在考虑遵循下一个示例的设置:
数据包 #1 的第一次传输 - RS(38,8) 接收到 NAK 数据包 #1 的第二次传输 - 额外的 FEC 字节使得在接收器它获得 RS(46,16) 接收到的 ACK
我的问题是,是否可以用 16 个 FEC 字节预处理数据包,并且只在接收器处用 8 个 FEC 字节解码消息?
这样会很好,因为第二次传输只发送接下来的 8 个奇偶校验字节,显着减少了开销。
protocols - 数据包分隔选项
我正在寻找通过非常嘈杂的 uart 通信链路发送数据(BER 可以达到 1E-13)。我正在考虑发送 64 字节长的数据。但是,这些数据包的长度不同,应该可以使用带有 X FEC 字节的 reed solomon 进行自解码,这些字节是根据程序中的另一个函数设置的。
数据包应按照以下方案进行划分:
我现在正在考虑的是如何能够将数据包定界为接收方可识别的。我想过两个主要的选择:
- 玉米棒
- 使用 COBS 听起来是一个不错的选择,但是,由于它是一个嘈杂的通道,我担心影响定界字符的错误会破坏整个数据包。
- 添加标题
- 添加一个标头来告诉数据包有多大感觉有点糟糕,因为它只有一个字节长,没有使用 reed somon 纠错的选项,并且编写另一个纠错算法是矫枉过正的。
对于这个问题,我还有哪些其他选择?