zoukankan      html  css  js  c++  java
  • ThinkLDPC编解码的细节学习

    1. 信号源:

      二进制信号源为随机生成而二进制序列,为1·n矩阵;

      16进制是否为4·n矩阵,或者直接在二进制信号源的基础上用GF(q)值作为非0值;

    2. Encode:(已有程序为Mackey方法a构造的H矩阵经高斯变换进而编码)

      1)  H = [I | P];  G = [P' | I];  G·H' = 0;

        u = s·G;    u = [c' s];   u·H' = 0

        c' = P * s' 可以分解成如下形式:

    c = zeros(1,m);
    for i = 1:m 
        c(i) = P(i,:) * s';
    end
    u = [c s];

      2) Mackey的H矩阵构造方法:

        a. 保证固定列重为p,而行的重量尽可能均匀的保持为q。同时要求任意两列之间的交叠重量不超过1。

        b. 将m/2的列,重量置为2,通常采用两个(m/2)*(m/2)的单位矩阵,上下叠放,剩余的列依然保持方法1的构造方法;

        c. 在前面所说的方法1和方法2的矩阵中,挑出部分使得双向图中出现短环的列,将其删除。再插入重新随机产生的列,使双向图中不再存在小于某个长度的环。

        (找时间验证下)用Mackey构造的方法1给出以一种准规则LDPC码的具体描述,选择一个不小于3的整数p,生成一个m*n矩阵A,使其具有固定列重量p和尽量一致的行重量q,对A进行高斯消元,得到系统形式的校验矩阵

          H=[P|I]

        如果A的各行不是线性无关的,就对其进行行列变换,使其具有结构

           A=[C1|C2]

        其中,C1是一个m*(n-m)稀疏矩阵,C2是一个m*m稀疏可逆矩阵,这样

          P=(C2^-1)*C1,G=[I P]。 

        d. 之前有看到PEG算法,但是pia了个霉的都是步骤概要,连最初发表的文章里都不详细(至少我这么觉着),所以不会实现,看C++程序有点头大......

        e. 消短环方法构造好像是吧><,找时间看看看能不能看明白......哎,理解能力不足,基础又不扎实,只能慢慢磨,累啊T.T

      3) 多进制时候,在已有的二进制H矩阵的基础上,用GF(q)替代1,看能否进行变换得到H=[I|P],或者按照Mackay给出的A的变换用C2和C1来得到G,进而求u。

      

    3. Decode:

      1) 硬判决位比特翻转法:matlab里面可以实现通过原理达到u*H'为0,但实验时仅随意设的H矩阵,满足u*H'=0的u不唯一......郁闷= =

        文献给出的结果图也表明,对于硬判决算法和在此基础上的软判决算法在误码率还是很高的,不想和积译码算法随着信噪比提高,误码率快速下降。

      2) 和积译码算法:研究指出,传统的置信传播算法译码复杂度为O(n2),文献指出,引入快速傅里叶变换后,译码复杂度将为O(q),因此,需要实现引入FFT变换的算法减少复杂度......还不会= =

      3) 二进制的时候,是给每个变量符号定义了一个结构体,包括先验概率、校验点给出的后验概率和变量点的后验概率,那如果换到多进制,那么每个变量点的概率可能值将为q种,建一个概率数组?长度为q,q=0...15,分别计算其概率得出结论?不过这样的话好像复杂了,不过应该有公式吧,只不过进行判断赋值就是了......有时候想的容易,实现太难T.T....

    4. 老天,谁能给我点代码借鉴借鉴学习学习||T.T||......

  • 相关阅读:
    如何添加动画效果
    iQuery高版本不兼容旋转木马插件问题
    splice方法可以实现增删改功能
    swiper.js实现轮播图效果
    MySQL | 操作表数据
    MySQL | 高级查询
    MySQL | 基本查询
    MySQL | 表函数
    MySQL | 表约束
    MySQL | 操作表
  • 原文地址:https://www.cnblogs.com/heyuheitong/p/2786163.html
Copyright © 2011-2022 走看看