BCH码(能纠正多个随机错误的循环码)

这篇具有很好参考价值的文章主要介绍了BCH码(能纠正多个随机错误的循环码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PS:课上讲的也是编解码流程,也没有原理,网上也没找到每一步的原理,想要了解设计思路还是需要去找一下原版的论文。

参考blog:
【1】【举例子详细分析】BCH码(BCH code)

1. 伽罗华域和多项式

  见之前的blog伽罗华域GF

2. 提出背景和思路

  奇偶校验码只能检查出错误而不知道具体是哪里出错。
  hamming码只能纠正 1 bit 错误。
  在GF ( 2 q ) (2^q) (2q)中,用多项式表示对应的有限域中的数值,多项式又可表示成二进制bit流的形式,等于二进制bit流与符号之间的一一映射,同时二进制多项式加法和二进制的按位异或等同(二进制流所受的干扰可用加法表示),多项式乘法及其逆运算能够实现多项式的恢复,本原多项式能保证逆运算结果具有唯一性。

  现假设待传输的消息用二进制流对应的 m ( x ) m(x) m(x)表示,乘上一个编码多项式 p ( x ) p(x) p(x),传输过程收到干扰可表示为 e ( x ) e(x) e(x),则接受到: c ( x ) = m ( x ) p ( x ) + e ( x ) c(x)=m(x) p(x)+e(x) c(x)=m(x)p(x)+e(x)如果接受端也知道p(x),那么就能得到 m ( x ) m(x) m(x) e ( x ) e(x) e(x)

本原元→本原多项式:

  1. GF ( 2 q ) (2^q) (2q)上的本原元是一个元素, 在域中的任何非零元素都可以表示为它的方幂
  2. 任意一个有限域 GF ( 2 q ) (2^q) (2q)必有一个本原元 α \alpha α
  3. 本原元的阶数为 2 q − 1 2^q-1 2q1,即 α 2 q − 1 + 1 = 0 \alpha^{2^q-1}+1=0 α2q1+1=0
  4. 本原多项式 p ( x ) p(x) p(x)是以本原元 α \alpha α为根的、首项系数为1的最低阶不可约多项式

3. 案例:为什么需要本原多项式

对于GF ( 2 4 ) (2^4) (24),有本原多项式 p ( x ) = x 2 + x + 1 p(x)=x^{2}+x+1 p(x)=x2+x+1
   m ( x ) m(x) m(x) 1001 1001 1001,而编码多项式 p ( x ) p(x) p(x) 1101 1101 1101,则 m ( x ) ∗ p ( x ) = 1100101 m(x)*p(x)=1100101 m(x)p(x)=1100101。若收到了干扰 e ( x ) = 0000010 e(x)=0000010 e(x)=0000010,则接受到 1100111 1100111 1100111,

e(x) e(x)/p(x) 的余项
1000000 1000000
0100000 0100000
0010000 0010000
0001000 1100000
0000100 0110000
0000010 1110000
0000001 1010000

  从表中可看出, e ( x ) e(x) e(x)和所得余项一一对应,通过余项结果可找到对应的 e ( x ) e(x) e(x)。如果采用 p ( x ) = 10001 = 101 ∗ 101 p(x)=10001=101*101 p(x)=10001=101101,1000000和0000100除以10001后余项均为1000000。

4. BCH码编码过程

  思想:一个本原多项式纠正一个错误,通过修正编码多项式 c ( x ) = m ( x ) Q ( x ) + e ( x ) c(x)=m(x) Q(x)+e(x) c(x)=m(x)Q(x)+e(x)令其中 Q ( x ) = p ( x ) p 3 ( x ) p 5 ( x ) ⋯ p 2 t − 1 ( x ) Q(x)=p(x) p_{3}(x) p_{5}(x) \cdots p_{2 t-1}(x) Q(x)=p(x)p3(x)p5(x)p2t1(x),p(x)是本原多项式,实现纠正多个错误。

   p 2 t − 1 ( x ) p_{2 t-1}(x) p2t1(x)的性质(a mod b=c,表明a除以b余数为c):

  1. p 2 i − 1 ( x )   m o d   p ( x ) = 0 , i = 2 , . . . , t p_{2 i-1}(x) \, mod \, p(x)=0,i=2,...,t p2i1(x)modp(x)=0i=2,...,t
  2. 本原BCH码 p ( α ) = p ( α 3 ) = . . . = p ( α 2 t − 1 ) = 0 p(\alpha)=p(\alpha^{3})=...=p(\alpha^{2t-1})=0 p(α)=p(α3)=...=p(α2t1)=0

  以 n = 2 4 − 1 = 15 n=2^{4}-1=15 n=241=15, 纠错数量 t = 3 t=3 t=3 的本原BCH码为例,设 α \alpha α为GF ( 2 4 ) (2^4) (24)的本原元,本原多项式为 p ( x ) = x 4 + x + 1 p(x)=x^{4}+x+1 p(x)=x4+x+1,那么 Q ( x ) = p ( x ) p 3 ( x ) p 5 ( x ) Q(x)=p(x) p_{3}(x) p_{5}(x) Q(x)=p(x)p3(x)p5(x),现有 p ( x ) = x 4 + x + 1 = ( x − α ) ( x − α 2 ) ( x − α 4 ) ( x − α 8 ) p(x)=x^{4}+x+1=(x-\alpha)(x-\alpha^2)(x-\alpha^4)(x-\alpha^8) p(x)=x4+x+1=(xα)(xα2)(xα4)(xα8),画表得到其共轭根为 α 3 , α 6 , α 12 , α 9 \alpha^{3}, \alpha^{6}, \alpha^{12}, \alpha^{9} α3,α6,α12,α9,故 p 3 ( x ) = ( x − α 3 ) ( x − α 6 ) ( x − α 2 ) ( x − α 9 ) = x 4 + x 3 + x 2 + x + 1 p_{3}(x)=(x-\alpha^{3})\left(x-\alpha^{6}\right)\left(x-\alpha^{2}\right)\left(x-\alpha^{9}\right)=x^{4}+x^{3}+x^{2}+x+1 p3(x)=(xα3)(xα6)(xα2)(xα9)=x4+x3+x2+x+1,剩余两根构成 p 5 ( x ) = ( x − α 5 ) ( x − α 10 ) = x 2 + x + 1 p_{5}(x)=\left(x-\alpha^{5}\right)\left(x-\alpha^{10}\right)=x^{2}+x+1 p5(x)=(xα5)(xα10)=x2+x+1。此时 g ( x ) = p ( x ) p 3 ( x ) p 5 ( x ) = x 10 + x 8 + x 5 + x 4 + x 2 + x + 1 g(x)=p(x) p_{3}(x) p_{5}(x)=x^{10}+x^{8}+x^{5}+x^{4}+x^{2}+x+1 g(x)=p(x)p3(x)p5(x)=x10+x8+x5+x4+x2+x+1

此时n=15,t=3,deg(g(x))= 10, k=n-deg=5,t=3,设计的码距d=2t+1,实际码距和设计码距相等

PS:(以上推导过程为法一,适合做题不适合编程)
BCH码(能纠正多个随机错误的循环码)法二:上图中极小多项式是 x 2 q − 1 x^{2^q-1} x2q1的因式分解结果,一个BCH码的生成多项式也可由 L C M [ f 1 ( x ) , f 2 ( x ) , … , f 2 t ( x ) ] LCM[f_1(x),f_2(x),…,f_{2t}(x)] LCM[f1(x),f2(x),,f2t(x)]给出,详细可见参考文献【1】

5. BCH码译码过程

由于 m ( x ) Q ( x ) m(x) Q(x) m(x)Q(x) α 1 , α 2 , … , α 2 t \alpha^{1}, \alpha^{2}, \ldots, \alpha^{2 t} α1,α2,,α2t为根。想要知道错误图样,需要知道在位置i是否发生错误。
定义 e ( x ) = ∑ i = 0 n − 1 e i x i = ∑ l = 1 γ Y l x i l e(x)={\sum_{i=0}^{n-1} e_{i} x^{i}}=\sum_{l=1}^{\gamma} Y_{l} x^{i_{l}} e(x)=i=0n1eixi=l=1γYlxil i l i_{l} il表示错误位置。
译码五步:
BCH码(能纠正多个随机错误的循环码)
5.1 伴随多项式的计算
法一:接收端知道 Q ( x ) Q(x) Q(x),能得到对应的 h ( x ) = x n + 1 Q ( x ) h(x)=\frac{x^n+1}{Q(x)} h(x)=Q(x)xn+1,从而写出H,即可计算s(x)
法二:
BCH码(能纠正多个随机错误的循环码)

推导过程:
BCH码(能纠正多个随机错误的循环码)

5.2 错误位置多项式系数的求解:
BCH码(能纠正多个随机错误的循环码)
5.3 错误位置的确定
BCH码(能纠正多个随机错误的循环码)
5.4 计算对应错误位置上的错误数值
BCH码(能纠正多个随机错误的循环码)
5.5 得到e(x),输出结果
BCH码(能纠正多个随机错误的循环码)文章来源地址https://www.toymoban.com/news/detail-489661.html

到了这里,关于BCH码(能纠正多个随机错误的循环码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js 实现多个文件循环下载 批量下载

    最近业务涉及勾选之后多个word文件下载 开始用的循环方式 怎么试都是下载最后一个文件 后来找到原因是 当循环执行下载的时候,几个下载命令连续执行的时候,浏览器会取消上一个下载,直接下载最后一个文件 。所以要加一个定时器,让几个连续的下载请求之间有时间间

    2024年02月11日
    浏览(38)
  • 2023年数学建模随机森林:基于多个决策树的集成学习方法

    目录 目录 1. 什么是随机森林? 2. 随机森林的优缺点 3. 随机森林的构建过程

    2024年02月08日
    浏览(28)
  • 通信算法 | BCH码

    本文对 BCH码 进行简单介绍 1 。 更新:2023 / 6 / 11 在信息论中,BCH codes 是指 Bose–Chaudhuri–Hocquenghem codes,可以用来纠错。BCH码利用了多项式一些很好的性质。本文将从0开始,用详细的例子解释二进制域中的BCH码 2 。 首先考虑二进制域,即所有每个位的取值只能是 0 或 1 。

    2024年02月09日
    浏览(24)
  • BCH编码与译码(MATLAB实现)

    BCH码是由Bose、Chandhari 和 Hocquenhem 分别独立提出的一种能够纠正多个随机错误的循环码。 BCH 码的定义:给定任一有限域 GF(q)及其扩域 GF(q m )(其中 q 为素数或素数幂),m 为某一正整数,若码元取自 GF(q) 循环码的生成多项式 g(x) 的根集合 R 中有 σ-1 个连续根 α m0 , α m0+1 ,

    2024年01月20日
    浏览(34)
  • 数据结构与算法-头歌【1】顺序线性表--课上练

      本意是整理和复习,理解不深或者有错误的评论区提出即可。 只有第一关的代码里面有结构体的定义,其余我只放了功能函数。 任务描述 本关要求按照完成顺序表数据类型定义,并初始化一个顺序线性表。 编程要求 顺序线性表数据结构定义如下: 本关的编程任务是补全

    2023年04月25日
    浏览(28)
  • Vue3 select循环多个,选项option不能重复被选

    环境 :vue3+ts+vite+element plus 实现目标 :Vue3 select循环多个,当其中一个option值被选后,其他select里面不能再重复选择该option值。第二种,当其中一个option值被选后,其他select里面就不出现被选option的值 第一种 :代码如下 效果: 第二种: 效果: 或者用script setup的写法 如果没

    2024年02月10日
    浏览(27)
  • 单页面内循环遍历的多个表单做校验(ui框架:elementui + uview)

    界面展示: 用户每次在【物资扫码】成功后,都会在右侧【物资列表】中增加一个如图的结构(分为上中下三部分,上为【物资编号】,中为表格展示的物资基本信息,下为用户需要填写的表单项【本次组盘数】),需要在用户点击【保存】时,校验每一个表单项必填且数量

    2024年02月11日
    浏览(42)
  • 10.17课上(七段显示器,递归异或与电路)

    用二选一选择器实现异或函数    在异或当中,如果有一项为0,就可以把那一项消掉;如果有一项为1,就是把剩下的所有项运算完的结果取反 (由此在算法当中可以采用递归解决) 当w1为0时,就直接把w1消掉,对剩余项无影响; 当w1为1时,把后面运算的结果取反 当w2为0时

    2024年02月07日
    浏览(26)
  • joi:定义多个自定义错误信息

    目录 前言 原始版 基础错误版 复杂版 简单版 在项目中,提交表单进行字段验证是必不可少的,在node项目中,自己写if else判断非常的繁琐,也不好进行维护,所以我们通常都会引入第三方包joi,来帮助我们进行表单字段的验证。 于是我写下了以下代码: 当然,验证是通过的

    2024年02月11日
    浏览(16)
  • 几种常用三维模型几何精纠正方法,可以纠正三维模型精度

    三维模型几何纠正方法主要包括以下几种: 坐标变换法: 通过对三维模型的坐标进行变换,实现几何纠正。常用的坐标变换包括平移、旋转和缩放等。平移和旋转可以通过对模型的平移和旋转矩阵进行计算实现,缩放可以通过对模型的坐标进行缩放系数的计算实现。 点云拟

    2024年01月20日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包