function [H]=getH(m,n)
row_flag(1:m)=0;
h=zeros(m,n);
bits_per_col=3;
for i=1:n
a=randperm(m);
for j=1:bits_per_col
h(a(j),i)=1;
row_flag(a(j))= row_flag(a(j))+1;
end
end
%每列都有3个1,每列1的位置是随机的不同的
max_ones_per_row=ceil(n*bits_per_col/m); %求每行1的最多个数即行重的最大值
for i=1:m
if row_flag(i)==0
for k=1:2 %??
j=unidrnd(m); %j=1~m间的任意值
while h(i,j)==1
j=unidrnd(m);
end
h(i,j)=1;
row_flag(i)=row_flag(i)+1;
end
end
if row_flag(i)==1
j=unidrnd(m);
while h(i,j)==1
j=unidrnd(m);
end
h(i,j)=1;
row_flag(i)=row_flag(i)+1;
end
end
for i=1:m %尝试在列上分散1的位置,使行重分布尽量均匀
j=1;
a=randperm(n);
while row_flag(i)>max_ones_per_row %如果该行行重大于行重的最大值,则进行处理
if h(i,a(j))==1 %随机选择某一该行上为1的列来处理,将改行上的1分散到其他行上
newrow=unidrnd(m); %随机查找该列上适合放置1(行重小于最大值且该位置为0)的行
k=0;
while (row_flag(newrow)>=max_ones_per_row|h(newrow,a(j))==1)&k<m
newrow=unidrnd(m);
k=k+1;
end
if h(newrow,a(j))==0 %将待处理行的1放到找到的行上,并对两行的行标志作相应的处理
h(newrow,a(j))=1;
row_flag(newrow)=row_flag(newrow)+1;
h(i,a(j))=0;
row_flag(i)=row_flag(i)-1;
end
end
j=j+1;
end
end
for loop=1:100
loop
%常是删除短环4
success=1;
for r=1:m
ones_position=find(h(r,:)==1); %将第r行为1的元素的位置找到,设为ones_position
ones_count=length(ones_position);
for i=[1:r-1,r+1:m]
common=0;
for j=1:ones_count
if h(i,ones_position(j))==1
common= common+1;
if common==1
a=ones_position(j); %两列的第一个共同1元素
end
end
if common==2
success=0;
common=common-1;
if (round(rand)==0) %随即决定保留前面的列还是后面的列
b=a; %保留后面的列,处理前面列上的第二个共同的1元素
a=ones_position(j);
else b=ones_position(j); %保留前面的列,处理后面列上的第二个共同的1元素
end
h(i,b)=3; %将该1置为3以使在以后的尝试删除中不用该值
newrow=unidrnd(m);
iteration=0;
while h(newrow,b)~=0 & iteration<5 %尝试5次在待交换的列中随机查找0
newrow=unidrnd(m);
iteration=iteration+1;
end
if iteration>=5 %超过5次则随机查找非1的0或3
while h(newrow,b)==1
newrow=unidrnd(m);
end
end
h(newrow,b)=1; %将该列中找到的0或3置为1
end
end
end
end
if success %如果本次循环已不存在短环4(seccess=1),则结束循环loop
break
end
end
h=h==1; %用0替代剩余的3,并得到构造好的校验矩阵H
H=h;
LDPC编码-任意码率-包括生成矩阵、校验矩阵、编码
需积分: 0 189 浏览量
2023-11-29
17:48:54
上传
评论
收藏 7KB ZIP 举报
swimmingfish23
- 粉丝: 5
- 资源: 2
最新资源
- keil2 + proteus + 8051.exe
- 1961ee27df03bd4595d28e24b00dde4e_744c805f7e4fb4d40fa3f695bfbab035_8(1).c
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
- windows注册表编辑工具
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
- 校园通行码预约管理系统20240522075502
- 车类型数据集6250张VOC+YOLO格式.zip
- The PyTorch implementation of STGCN.STGCN-main.zip
- 092300108.cpp
- 车类型数据集6000张VOC+YOLO格式.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈