问题标签 [error-detection]

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 回答
309 浏览

protocols - 自制通信协议的校验和

我必须实现一个通过 I 2 C 运行并用于两个分布式微控制器的板对板通信的通信协议。为了确保数据完整性,我想在通信协议中添加一个校验和,并认为应该适合 CRC-8 或 CRC-16 之类的东西,但不幸的是我没有胶水,我应该使用哪个标准来确定最佳算法,并且在下一步,最佳设置(如 CRC 的多项式值)。

我的协议很简单,只定义了一个 32 位读取和一个 32 位写入命令:

  • I 2 C 主读命令:

    • 请求(I 2 C WR):2 字节内存索引 + 校验和
    • 响应(I 2 C RD):4 字节数据 + 校验和
  • I 2 C 主机写命令:

    • 请求(I 2 C WR):2 字节内存索引 + 4 字节数据 + 校验和

我在论坛帖子上读到,CRC 长度取决于应验证的数据大小,因此 CRC-8 可以充分验证 CRC-16 的 2 8 % 8 (=32bit) 和 2 16 % 8 (=8KiB) 数据. 如果真是这样的话,CRC-8应该就够了,但是不知道这个说法对不对……

有人可以帮助我,我如何确定我的协议的最佳校验和算法?

0 投票
1 回答
64 浏览

algorithm - 获取没有控制位的原始汉明字

如何在没有汉明编码的情况下获得原始单词?

例如:我有这个汉明编码的词:011001101100 我怎样才能回到原来的词?正确答案是:00111100

0 投票
1 回答
459 浏览

python - Reed Solomon 错误检测能力不是 2T

我正在建立一个 Reed Solomon 库来纠正和检测进来的错误。为简单起见,让我们看一下 Reed Solomon 配置,其中

这可以纠正任何 1 个符号错误,并且,这篇文章的目的,它可以检测 2 个符号错误。关于 RS 错误检测的文献有限,但您可以查看Wikipedia 文章中的简介:

通过将 t 个校验符号添加到数据中,Reed-Solomon 码可以检测最多(包括)错误符号的任意组合,或者纠正最多(包括)⌊t/2⌋ 符号的任何组合。

然而,这似乎与我的观察不符。

我有一个库,主要是根据这篇文章构建的。

据我所知,效果很好。我围绕我们的实现设置了一个详尽的测试,发现有 2 个符号错误(据我理解应该是可检测的)但事实并非如此。据我了解,一个简单的检查来查看是否发生了通过正常检查的不可纠正的错误(即错误定位器是有效的,发现错误具有有效的错误计数,多项式次数是有效的)是重新计算的伴随式更正的消息。如果校正子不为零,那么我们仍然有错误。但是,当我这样做时,校正子全为 0,表明没有发现错误,并且我们在具有 1 个错误符号的错误向量和具有 2 个错误符号的错误向量之间存在冲突。

这是测试:

输出:

如果你还在阅读,谢谢。我知道我没有提供整个库,但我确实提供了输入、输出和关键变量值。我想知道的是我上面写的理解是否错误;我们可以检测 2T 符号错误,其中 2T 是添加符号的数量。因为从这个测试用例中似乎存在冲突,我通过计算以下错误向量中的伴随式来进一步测试这一点,这些错误向量进一步支持冲突,并且 Reed Solomon 不一定能检测到 2T 以内的所有错误。让我知道我是否错了。

有碰撞

0 投票
1 回答
162 浏览

checksum - 什么是最“位高效”的错误检测方法?

为了检测比特长度n_errors代码中的许多错误n_total,我们必须牺牲一定数量n_check的比特来进行某种校验和。

我的问题是:方法是什么,我必须牺牲最少的位数来检测位长度代码中n_check给定数量的错误。n_errorsn_total

如果对这个问题没有一般性的答案,我将非常感谢有关以下条件的方法的一些提示: n_total=32n_errors>1并且显然n_check应该尽可能小。

谢谢你。

0 投票
0 回答
14 浏览

networking - 数据链路层最常用的错误控制机制是什么?

我已经阅读了 3 种错误控制技术,即停止和等待 ARQ、返回 N ARQ 和选择性 ARQ 所有我想知道网络行业目前正在使用哪种技术......

有人可以给我任何链接以获取有关网络行业当前变化的最新信息。

谢谢

0 投票
0 回答
23 浏览

javascript - Canvas HIT 测试:处理元素边界和抗锯齿

设置

作为用 Javascript 编写的 Web 矢量编辑工具的一部分,我正在使用类似于Concrete.js的命中画布策略来实现命中测试。大多数情况下,它工作得很好:我画了两次我的形状(一次在显示画布上,一次在命中画布上)。

在查询画布时,我检查命中画布的悬停像素并提取交互信息(即其中存储了哪个对象 ID)。

问题

这在形状内部效果很好,但在抗锯齿使存储数据无效的边界处存在严重缺陷(它与之前存在的任何背景数据混合在一起)。有没有很好的策略来处理这个数据边界问题?

如果不禁用画布方法的抗锯齿,那么我们必然会有一些跨越重叠区域的边界区域,这些区域将存储来自多个区域的合并数据。

简单的场景

在二元场景(一些前景与背景)中,可以减轻这种情况,因为我们可以假设背景没有价值,任何价值都变成了一些前景。

真实场景

但是,在背景之上多个形状相互重叠的一般场景中,是否有任何合理的错误检测策略?(或纠错,但我认为这更难)

如果我可以判断数据是无效的(即它由抗锯齿引起的扰动数据组成),那么我可以对边界处的那几个像素使用不同的策略。但我觉得在我们可以有许多重叠形状的一般情况下,无法判断我提取的数据是否有效。

当然,一种解决方案是不使用命中画布。但我想知道人们是否找到了使用命中画布的解决方案,因为它们似乎非常适合处理复杂的几何图形。

抗锯齿

理想的解决方案是禁用 anti-aliasing,我认为这对于画布方法 [*] 是不可能的。

[*] 我知道我们可以在渲染图像(例如那个问题)时禁用过滤,例如 withimageSmoothingEnabled=false或 rescaling with image-rendering: pixelated,但是这些并不能解决绘制形状/路径时的抗锯齿问题。

0 投票
1 回答
714 浏览

crc - CRC 错误检测和未检测到的错误概率

如果我们有一个大文件,比如说 1 PB,那么可以检测所有错误的最佳 CRC​​ 是什么?32位够吗?

我还听说undetected error rate (packet or chunk) is= BitR* BER * 0.5^k哪个 K 是 CRC 的 FSC。在 CRC 32 k 中是 31

我想知道我们是否有更大的数据包或更小的数据包,这将如何影响 CRC ……从这个等式来看,它根本没有影响。

0 投票
1 回答
159 浏览

probability - 计算 CRC 中整个文件(不是数据包)的未检测到错误的概率

如果我们有一个大文件,我想知道这将如何影响未检测到的错误的概率,尤其是在 CRC 中。我知道未检测到的错误率(数据包或块)= BitR* BER * 0.5^k 其中 K 是 CRC 的 FSC。在 CRC 32 k 中是 31,

从这个等式和下面的图片来看,数据包大小不会影响不同数据包大小的未检测到错误的概率。假设我们有 1,000,000 个数据包,每个数据包的未检测到错误概率为 2^(-32),我如何计算整个 1PB 文件未检测到错误的概率?

上限始终相同

0 投票
1 回答
45 浏览

python - 是否有用于在时间序列数据集中连续定位多个相同值的 python 函数?

我正在处理 2020 年每分钟聚合的大型时间序列数据集。该数据集从正在监测热电厂设备的传感器获取值。传感器测量温度、压力、电流等值,并根据每次读数更新数据集。

我正在寻找由传感器引起的数据集中的错误。当来自传感器的输入停留在某个值时,就会出现来自传感器的错误类型之一。例如,当我们知道它应该波动时,其中一个温度传感器连续 20 分钟报告了 71.46 的值。我试图在我当前的数据集中找到这些错误,并希望训练一个模型来检查未来数据集中的重复值。

理想情况下,我希望能够在数据集中找到一个值连续重复 5 次或更多次的时间窗口。

数据采用 pandas 时间数据帧的形式,内核为 python 3.6。如果您有任何建议,请告诉我。

0 投票
0 回答
46 浏览

c++ - 从字符串转换的编译时检查?

让我们有一个Foo从字符串定义转换构造函数的类。根据字符串的内容,此构造函数可以成功(创建 的实例Foo)或失败(抛出异常):

我们还operator==()用于比较 aFoo和字符串:

客户端代码可能最常使用有效的字符串文字调用比较运算符:

但有时它可能会使用无效的字符串文字调用比较运算符(程序员的错误):

有没有办法在编译时而不是运行时检测案例 B?(我希望有,但害怕没有......)

注意:可以检查字符串的有效性,例如,使用正则表达式。