zoukankan      html  css  js  c++  java
  • 比特冗余

    “纠错码”的应用,主要作用是牺牲有效性,换取可靠性。以1/3码率的Turbo码来说,有效位和校验位之比为1:2。

    如果说纠错码的“浪费”是经数学证明所不得不添加的冗余,那么另一种“浪费”则是在物理实现上的无奈:

    无论是在编码还是在组帧时,常见的操作便是“补零”。只是这里补的零在数学上来看不起任何作用,完全没有必要。

    那么“补零”操作的原因是什么呢?这主要是因为在硬件实现时很多东西都是写死了的(电路线已布好)。

    无论是编码器还是组帧结构,一个有效的方法便是以出现概率最大的方式来设计:

    当LDPC编码器设计为(5120,4096)的结构时,对于3456bit的待编码数据就要补640个零以满足编码器输入条件。

    一些特殊情况下,组帧也是按照长帧结构来设计的,发短帧时就不得不通过补零来满足帧结构设计。

    上面提到“以出现概率最大的方式来设计是有效的”,其理论依据便是哈夫曼编码,其设计思想便是码长与其出现概率成反比,即出现概率大的符号用短码,出现概率小的符号用长码,最后得到的总码长的期望值则是较小的和有效的--在通信上有效是指有效率(efficient),而在医学上有效则是指有效果(effective)。

    编码所造成的效率降低可通过“打孔”的方式弥补回来--为达到所需要的码率,在损失一定可靠性的前提下可对编码后的数据进行打孔。这样,在接收端译码前先对打孔处的数据以零填充。考虑到译码采用软判决,零数据就相当于是1bit置信度为0的删除信息。也就是说对于迭代译码的软判决,原本可以“帮助”译码的信息丢失了,导致纠错码性能的降低。虽然零信息帮不上忙,但也不会帮倒忙,因此合适的打孔策略是能满足我们对于性能的需求的。

    尤其需要注意的是,当采用补零的方式进行编码时,自然想到可以对零数据进行打孔,只是在译码时打孔处的数据就不能是用零来填充了,而应以表示零数据的软信息的最大值来填充(比如,8位软信息,取值为-128到127,若软信息取负值时表示零符号,则被打孔处的数据就要以-128来填充)。

    该部分内容可结合另一篇博文来看:https://www.cnblogs.com/achangchang/p/11396958.html

  • 相关阅读:
    _ 下划线 Underscores __init__
    Page not found (404) 不被Django的exception中间件捕捉 中间件
    从装修儿童房时的门锁说起
    欧拉定理 费马小定理的推广
    线性运算 非线性运算
    Optimistic concurrency control 死锁 悲观锁 乐观锁 自旋锁
    Avoiding Full Table Scans
    批量的单向的ssh 认证
    批量的单向的ssh 认证
    Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l
  • 原文地址:https://www.cnblogs.com/achangchang/p/11403911.html
Copyright © 2011-2022 走看看