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怎么得来...继续学习去...发现会的实在太少了...有会的或者做类似仿真的通知我下,我学习下,嘿嘿~~

原文地址:https://www.cnblogs.com/heyuheitong/p/2753657.html