匹配数据的算法

标签 algorithm string string-matching

我有一个项目,我正在测试对噪声(电磁、 radio 等)非常敏感的设备。该设备根据给定的输入(音频)每秒生成 5-6 个字节的二进制数据(对于未经训练的人来说看起来像是乱码)。

根据噪声,设备有时会丢失字符,有时会插入随机字符,有时是两者的倍数。

我编写了一个应用程序,让用户能够即时查看它生成的错误(与主文件相比 [例如,设备在理想条件下应输出的内容])。我的算法基本上采用实时数据中的每个字节,并将其与已知主文件中相同位置的字节进行比较。如果字节不匹配,我将在当前位置的两个方向上有一个 10 个字符的窗口,我将在附近寻找匹配项。如果匹配(加上一两个验证),我会在 UI 中直观地标记位置并记录错误。

这种方法工作得相当好,实际上,考虑到传入数据的速度,它也可以实时工作。但是,我觉得我正在做的事情并不是最优的,如果数据以更高的速率流式传输,这种方法就会分崩离析。

我可以采取其他方法吗?是否有针对此类事物的已知算法?
多年前,我读到 NASA 的数据收集设备(例如与太空和月球/火星上的飞行器通信的设备)尽管在太空中受到巨大干扰,但数据丢失了 0.00001%。

有什么想法吗?

最佳答案

我想主要感兴趣的是设备生成的信号?什么更重要?检测何时发生错误或使信号“稳健”以应对此类错误?我最近做了很多信号处理,信号去噪是我日常工作的一部分,我基本上是在尝试估计真实信号并去除任何污染物。

我不知道设备产生的信号是如何被进一步使用的……如果它被记录到电脑上,那么你可以很容易地应用一些去噪,例如尝试小波去噪。您会找到以您选择的多种语言执行此操作的软件包。

关于匹配数据的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5284819/

相关文章:

algorithm - 访问完整有向图中所有节点的最短路径

循环运行不够快的 JavaScript 函数

Ruby - 查看一个数字的倍数是否与原始数字具有完全相同的数字(重新排列)

r - 如何从包含R中特殊字符和单词混合的字符串中提取标题

c# - 在 C# 中使用 LINQ 查找字符串数组中的确切子字符串

javascript - 连接包含多个空格的数组可以消除 Chrome 中的重复空格

string - 根据动态模式匹配符号流

c++ - 在不修改集合的情况下按排序顺序遍历集合的算法?

R 中的正则表达式 : finding exact number

迁移网站时匹配重定向 URL 的算法