• EncodeLDPC校验矩阵H的高斯变换


        这两天看LDPC得代码,刚开头,看到H矩阵的高斯变换部分,即得到H=[I P],输出P。

        按自己的想法写了段matlab代码(注释那句matlab里应该是%):

    for k = 1:rows
        if ( H(k,k) == 0 )
            ind = find( H(k+1:rows,k)~=0 );
            if ~isempty(ind)
                x = k+ind(unidrnd(length(ind)));
                H(k,:) = rem( H(k,:) + H(x,:), 2 );
            end
        end
        for i = [k+1:rows]
            if ( H(i,k) == 1)
                H(i,:) = rem( H(i,:)+H(k,:), 2 );
            end
        end
    end
    //查找有无不符合的行需要进行列变换的
    for k = 1:rows
        if H(k,k) == 0
            x = rows;
            cnd = find( H(k,rows+1:cols) ~= 0 );
            if ~isempty(cnd)
                temp = H(:,k);
                H(:,k) = H(:,x+cnd(1));
                H(:,x+cnd(1)) = temp;
                rearranged_cols(k) = x + cnd(1);
            end
        end
    end

        上面实现了上三角阵,继续下面的代码就能完成要求的操作:

    //将上三角矩阵变为前半部分单位矩阵
    for k = 1:rows
        x = k;
        ind = find( H(k,k+1:rows) ~= 0 );
        while ( ~isempty(ind) )
            x = ind(1)+x;
            H(k,:) = rem( H(k,:) + H(x,:), 2 );
            ind = find( H(k,x+1:rows) ~= 0 );
        end
    end

        虽然比较满意能够编出来,因为前几天看了但没理解,但还是网上给的方法编出来更简单些,而且用的循环少些。不管怎么说,是一个小节点的完成吧~~继续继续!!

  • 相关阅读:
    Python with
    Python else
    Python list
    The Python Debugger Pdb
    RPM 包
    yum
    OpenStack I18N
    Python unittest
    MySQL 行格式
    MySQL 行溢出数据
  • 原文地址:https://www.cnblogs.com/heyuheitong/p/2737949.html
Copyright © 2020-2023  润新知