汉明码检错与纠错的结论(hamming code)

2024-04-06 04:28

本文主要是介绍汉明码检错与纠错的结论(hamming code),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       假如一组二进制数据为101,另外一组为111,那么显然把第一组的第二位数据0改成1就可以变成第二组数据111,所以两组数据的汉明距离就为1

        简单点说,汉明距离就是一组二进制数据变成另一组数据所需的步骤数(它表示两个相同长度的字符串对应位置的不同字符的数量),显然,这个数值可以衡量两张图片的差异,汉明距离越小,则代表相似度越高。汉明距离为0,即代表两张图片完全一样。

要检测所有最多d个错误的集合,必须满足任意两个帧之间的海明距离是d+1或更多。

        这是因为,如果距离小于d+1,那么当一个帧发生少于或等于d个错误时,可能会变成另一个有效的帧,这样就检测不到错误了。

        考虑二进制编码“1010”和“1001”,海明距离为2,这意味着我们可以检测出最多1个错误,因为任何一个单一位的错误都会导致结果与原来的两个编码都不同。

要校正所有最多d个错误的集合,必须满足任意两个帧之间的海明距离是2d+1或更多。

        如果一个码字有d位发生差错,它仍然距离原来的码字距离最近,可以直接恢复为该码。

        也就是说,纠错的目的是为了让检测出差错的编码,这里出现差错的编码也就是与目标编码不符的非法编码,变回它改变前的合法编码,而在海明距离是2d+1时,如果出现d位差错,它只需要d位改变就可变回合法编码,一旦出现d+1位差错,数据也会想要通过d位改变成为合法编码,但此合法编码并非之前我们想要的编码,所以2d+1的海明距离只能纠正d个错误。

        如图,非法编码1只需改变d位就能变为合法编码1,而如果其一开始的编码为合法编码2,即其出现了d+1个错误,其仍会变为合法编码1,无法达到纠正效果 。

这篇关于汉明码检错与纠错的结论(hamming code)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/878990

相关文章

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍

概述 本节将通过一个简单的例子来介绍如何生成llvm IR,以Kaleidoscope IR中的例子为例,我们基于LLVM接口构建一个简单的编译器,实现简单的语句解析并转化为LLVM IR,生成对应的LLVM IR部分,代码如下,文件名为toy.cpp,先给出代码,后面会详细介绍每一步分代码: #include "llvm/ADT/APFloat.h"#include "llvm/ADT/S

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

通信工程学习:什么是FEC前向纠错

FEC:前向纠错        FEC(Forward Error Correction,前向纠错)是一种增加数据通信可信度的技术,广泛应用于计算机网络、无线通信、卫星通信等多种数据传输场景中。其基本原理和特点可以归纳如下: 一、FEC前向纠错的基本原理        FEC技术通过在发送端对原始数据添加冗余信息(即纠错码),使得接收端在接收到数据后,即使部分数据在传输过程中发生错误

code: 400, msg: Required request body is missing 错误解决

引起这个错误的原因是,请求参数按照get方式给。 应该给json字符串才对 补充: 1. @RequestBody String resource 加@RequestBody必须给json字符串,否则会报错400,记如标题错误。 不加这个的进行请求的话,其实post和get就没有什么区别了。 2. List<String> indexCodes=(List<String>)json.

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity

解决服务器VS Code中Jupyter突然崩溃的问题

问题 本来在服务器Anaconda的Python环境里装其他的包,装完了想在Jupyter里写代码验证一下有没有装好,一运行发现Jupyter崩溃了!?报错如下所示 Failed to start the Kernel. ImportError: /home/hujh/anaconda3/envs/mia/lib/python3.12/lib-dynload/_sqlite3.cpython-

Behind the Code:与 Rakic 和 Todorovic 对话 OriginTrail 如何实现 AI 去中心化

原文:https://www.youtube.com/watch?v=ZMuLyLCtE3s&list=PLtyd7v_I7PGnko80O0LCwQQsvhwAMu9cv&index=12 作者:The Kusamarian 编译:OneBlock+ 随着人工智能技术的飞速发展,一系列前所未有的挑战随之而来:模型的衰退与互联网的潜在威胁愈发明显。AI 的增长曲线可能因训练过程中的瓶颈而趋于平

冒泡排序和鸡尾酒排序(code)

昨天回顾了下冒泡排序和鸡尾酒排序,用面向对象的方式写了一下,并且优化了代码,记录一下~ 一、冒泡排序 # 冒泡排序class BubbleSort(object):def __init__(self, data_list):self.data_list = data_listself.length = len(data_list)# 简单粗暴的排序方式def b_sort(self):d

编译时出现错误 -- clang: error: linker command failed with exit code 1 (use -v to see invocation)

出现这个错误的原因有多种,常见的是因为某些文件的缺失或者是文件的重复导致的。 这类错误查看的关键在于其上一行的文字。 对于文件缺少而导致错误的情况: 例如上图中的示例,其上一行文字为 ld:library not found for -lrxl,可以看出是缺失了某一文件而导致的错误,这行文字中的最后“ -lrxl ”:-l 代表着其前缀是“lib”,连着后面的 rxl,其名称为 libr