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(m,n);
%给定变量节点度分布序列 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(dv,0,1);
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(1,m);
%下面展开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(1000,m);
row=find(h(:,j)); %列搜索,搜索为1的行标
dcf(l,row)=1; %展开第一层
while(flag)
l=l+1;
h_row=h(row,:);
if length(row)==1
col=find(h_row);
else
col=find(any(h_row(:,1:n))); %行搜索,寻找为1的列标
end
h_col=(h(:,col))';
if length(col)==1
row1=find(h_col);
else
row1=find(any(h_col(:,1:m)));
end
row=row1;
dcf(l,row)=1;
if l>=2
%停止展开第一种条件:集合元素停止增长
if dcf(l,:)==dcf(l-1,:)
nc_all=find(dcf(l,:)==0);
ndc=dc(nc_all);
nc=find(ndc==min(ndc));
h(nc_all(nc(1)),j)=1;
dc(nc_all(nc(1)))=dc(nc_all(nc(1)))+1;
break;
%停止展开第二种情况:集合元素饱和
elseif (sum(dcf(l-1,:))<m) && (sum(dcf(l,:))==m)
nc1_all=find((dcf(l-1,:)&dcf(l,:))==0);
ndc1=dc(nc1_all);
nc1=find(ndc1==min(ndc1));
h(nc1_all(nc1(1)),j)=1;
dc(nc1_all(nc1(1)))=dc(nc1_all(nc1(1)))+1;
break;
end
end
end
end
end
end

御道御小黑
- 粉丝: 94
最新资源
- 人工智能技术在智能建筑中的应用-1(1).docx
- C语言程序改错题(1).docx
- 最全最全最新ARCGIS地面点生成dem完整版(1).docx
- eExcel函数大全(1).pdf
- 在线考试系统-c#高级开发实训报告(3)(1).doc
- 关于中国移动通信客户忠诚度的研究论文-学位论文(1).doc
- 互联网-基于位置的服务对人们生活的影响的调查--本科毕业设计论文(1).doc
- 网设计实训报告html语言(1).doc
- 亿赛通加密软件操作说明(1).docx
- 基于单片机自动打铃系统设计(1).doc
- 基于proteus的步进电机闭环控制仿真-毕业论文(1).doc
- 基于有轨电车运营乘务安全信息化管理研究(1).docx
- 基于信息化课堂教学应用与创新的三通平台项目建议书(1)(1).doc
- 企业信息化建设与企业管理创新探究(1).docx
- 通信原理课程设计视频监控系统设计大学论文(1).doc
- 图书管理系统设计与实现图书管理与读者管理毕业设计论文(1).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



评论2