• 大小: 3KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-05-17
  • 语言: Matlab
  • 标签: PEG  

资源简介

LDPC码的PEG算法Matlab code

资源截图

代码片段和文件信息

clear all;
clc;
%输入编码参数m:校验节点数目,n:变量节点数目(注意码率R不一定为1/2)
%构造任意码率的LDPC校验矩阵
m=input(‘The number of check nodes:‘);
n=input(‘The number of variable nodes:‘);
h=zeros(mn);
%给定变量节点度分布序列 dv=0.38354*x+0.04237*x^2+0.57409*x^3
%为了得到更好的性能,此处的度分布序列采用密度进化理论选取
dv=inline(‘0.38354*x+0.04237*x.^2+0.57409*x.^3‘‘x‘);
%计算每个度分布的节点数
indv=quadl(dv01);
a2=round(n*(0.38354/2/indv));
a3=round(n*(0.04273/3/indv));
ds(1:a2)=2;
ds(a2+1:a3+a2)=3;
ds(a2+a3+1:n)=4;
%这里不考虑校验节点的度分布序列,构造新Tanner图时,均为0
dc=zeros(1m);
%下面展开PEG算法,将每一个变量节点展成l层子图,构造Tanner图
for j=1:n            %对于每一个变量节点循环
    for k=1:ds(j)    %对于度分布循环,控制边的数目
        if k==1
            %若为第一条边,直接寻找最小度分布的校验节点
            k1=find(dc==min(dc));
            h(k1(1)j)=1;
            dc(k1(1))=dc(k1(1))+1;
        else %若不是第一条边,则展成l层子图,寻找在l层最小度分布的校验节点
            flag=1;
            l=1;
            %这里对每一个校验节点是否存在于第l层做标记最大展开层数待定
            dcf=zeros(1000m);
            row=find(h(:j));   %列搜索,搜索为1的行标
            dcf(lrow)=1;       %展开第一层
            while(flag)
                l=l+1;
                h_row=h(row:);
                if  length(row)==1
                    col=find(h_row);
                else
                   

评论

共有 条评论