remove_fourcycle.m

来自「ldpc编码」· M 代码 · 共 69 行

M
69
字号
function S=remove_fourcycle(dv,dc,p)
% H=[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0;
%    0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0;
%    0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0;
%    0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0;
%    0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1;
%    1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0;
%    0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1;
%    0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0;
%    0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0;
%    0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0;
%    1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1;
%    0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0;
%    0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0;
%    0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0;
%    0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0];
%dv=3;
%dc=9;
H_origin=zeros(dv,dc);S=zeros(dv,dc);
%p=12;
flag_one=0;flag_two=0;
for i=1:dv
    for j=1:dc
         H_origin(i,j)=1;
         Sr=S(i,j);
    while (Sr<p) 
 H=hcreat(H_origin,p,S);
[cycle_position_all find_four]=seek_fourcycle(H,p);
  
%S_ij_all=ceil(cycle_position_all/p);% S循环矩阵中4环所对应的值得行和列
          if isempty(cycle_position_all)
               S(i,j)=Sr;
               Sr=p;
          else
               Sr=randperm(p)-1;
               flag_one=flag_one+1;
               Sr=Sr(1);
               S(i,j)=Sr;
          end
          if flag_one==p-1
              S(i,j-1)=mod(S(i,j-1)+1,p);
              flag_two= flag_two+1;
              flag_one=0;
          end
          if  flag_two==p-1
              S(i,j-2)=mod(S(i,j-2)+1,p);
               flag_two=0;
          end
    end
  end
end
S;
% S =(p=15)
% 
%      0     0     0     0     0     0     0     0     0
%      0     3     1    13     8     4    12    11    14
%      0    10     6     1    12    14    13     2     7
% S =(p=14)
% 
%      0     0     0     0     0     0     0     0     0
%      0    10     6     7    12     3     4     5    11
%      0     5     2     9    10     6     8    13     3
% S =(p=12)
% 
%      0     0     0     0     0     0     0     0     0
%      0     1     2     7     5     6     8     9    11
%      0    11    10     4     9     8     7     3     2

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?