zoukankan      html  css  js  c++  java
  • EncodeLDPC校验矩阵H的LU分解法

        由于二进制的LDPC算是基本完成(虽然只是普通的Mackay的生成H方法及BP译码算法),想着往GF(q)-LDPC方向继续学习。

        如果仅仅使用的话matlab里有直接的函数,用hlep lu就可以查看了,像[L,U,P] = lu(A)可以直接调用LU算法。如下是自己的编写过程:

        查阅文献,首先是编码方面,文献中提出LU分解编码方法可以保证编码复杂度与码长N成正比,减少了系统编码方法由于q进制而增加的大量复杂度,虽然改进LU方法还在学习,不过基本的LU算是实现了,如下:

    function [L U] = LU_2(A)
    
    dim = size(A);
    n = dim(1);
    
    L = zeros(n,n);
    U = zeros(n,n);
    
    for i=1:n 
        L(i,i)=1; 
    end 
    
    for k=1:n 
        for j=k:n 
            U(k,j)=A(k,j)-sum(L(k,1:k-1).*U(1:k-1,j)'); 
        end 
    
        for i=k+1:n 
            L(i,k)=(A(i,k)-sum(L(i,1:k-1).*U(1:k-1,k)'))/U(k,k); 
        end 
    end 
    

      上面代码是按照Doolittle给的公式实现的,其中对于sum括号里的计算也可以写成如下,似乎更容易理解:

     L(i,r)=(A(i,r)-L(i,1:r-1)*U(1:r-1,r))/U(r,r);
    

      看出不同了吗?一个是.*,一个是*,正好这里复习下matlab矩阵乘法:

    A =
    
         1     2
         3     1
    
    
    B =
    
         2     5
         1     3
    
    
    C = A*B
    
         4    11
         7    18
    
    
    D = A.*B
    
         2    10
         3     3
    

      第一种是普通矩阵相乘,按照行列来进行的;第二种是矩阵元素相乘~~

        现在LU的问题就是那个改进的LU分解编码中PA=LU的P怎么得来...继续学习去...发现会的实在太少了...有会的或者做类似仿真的通知我下,我学习下,嘿嘿~~

  • 相关阅读:
    抓包来看ftp状态码
    socket基础篇
    密码复杂度检查函数
    time模块
    读取日志文件,搜索关键字,打印关键字前5行。yield、deque实例
    装饰器--函数
    yield用法
    字符编码
    pycharm + git实现两台电脑代码同步
    PyCharm常见用法
  • 原文地址:https://www.cnblogs.com/heyuheitong/p/2753657.html
Copyright © 2011-2022 走看看