⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qc_ldpc.m

📁 Generates Alist format files for SFT LDPC codes
💻 M
字号:
function Array = QC_LDPC(m,a,b,output_file)
%QC_LDPC(m,a,b) as defined in Fujita paper
%order(a) = j and order(b) = k





invalid_parameters = 0;



%if(isprime(m))                                   %checking to make sure "p" is prime and odd
    
    Identity = eye(m);
    V = zeros(m,m);
    sigma = circshift(Identity,[0 -1]);
     zero_vector = zeros(1,m);
     random_vector = Srandom(m,1);
    
 
    
    
    k = order(a,m);
    j = order(b,m);
%else
 %   invalid_parameters = 1;
%end



if invalid_parameters ~= 1
    %make Array code
    for q=1:j
        for r = 1:k
          if(q==1 && r == 1)
                Matrix = circshift(Identity,[0 -1]);
            elseif q == 1
                power = mod(a^(r-1),m);
                Matrix = circshift(Identity,[0 -power]);
                
            elseif r == 1
                power = mod(b^(q-1),m);
              
                    Matrix = circshift(Identity,[0 -power]);
              
            else
              
                    power1 = mod(b^(q-1),m);
                    power2 = mod(a^(r-1),m);
                    power = mod(power1*power2,m);
                    Matrix = circshift(Identity,[0 -power]);                %circular shift matrix to the left by power
               
            end

            for y=1:m
                for z = 1:m
                    row = (q-1)*m;
                    column = (r-1)*m;
                    Array(row + y,column + z) = Matrix(y,z);
                end
            end
        end
    end

  S_58 = sigma^58;
  S_34 = sigma^34;
  S_42 = sigma^42;
  S_12 = sigma^12;
  S_22 = sigma^22;
  S_15 = sigma^15;
  
  %for z=1:61
      %S_58(z,:) = zeros(1,61);
      %S_34(z,:) = zeros(1,61);
      %S_42(z,:) = zeros(1,61);
      %S_12(z,:) = zeros(1,61);
      %S_22(z,:) = zeros(1,61);
      %S_15(z,:) = zeros(1,61);
     
  %end
  
  
  
  %H1 = [sigma^1 sigma^25 sigma^199 sigma^76 sigma^196;
   %     sigma^7 sigma^46 sigma^85 sigma^208 sigma^88];


  H1 = [sigma^1 sigma^477 sigma^493 sigma^529 sigma^821;
        sigma^225 sigma^137 sigma^361 sigma^21 sigma^733;
        sigma^899 sigma^441 sigma^201 sigma^505 sigma^345];
    
  H2 = [sigma^1 sigma^212 sigma^239 sigma^500 sigma^570;
        sigma^130 sigma^797 sigma^276 sigma^120 sigma^299;
        sigma^680 sigma^613 sigma^196 sigma^191 sigma^753];
    
 %  H2 = [Identity Identity Identity Identity Identity Identity Identity;
  %      Identity sigma^1 sigma^2 sigma^3 sigma^4 sigma^5 sigma^6;
   %     Identity sigma^2 sigma^4 sigma^6 sigma^8 sigma^10 sigma^12];
        
  % H3 = [sigma^1 sigma^55 sigma^71 sigma^107 sigma^188;
   %     sigma^210 sigma^156 sigma^140 sigma^104 sigma^23];      
   
   %H4 = [sigma^188 sigma^107 sigma^71 sigma^55 sigma^1;
    %    sigma^23 sigma^104 sigma^140 sigma^156 sigma^210]; 
        
      
    rank(H1)
    rank(H2)
    Array_3 = [H1];
    
    %Array_3 = [sigma^1 sigma^58 sigma^199 sigma^148 sigma^144 sigma^123 sigma^171;
     %          sigma^1 sigma^123 sigma^148 sigma^58 sigma^171 sigma^144 sigma^199;
      %         sigma^14 sigma^179 sigma^43 sigma^173 sigma^117 sigma^34 sigma^73;
       %        sigma^14 sigma^34 sigma^173 sigma^179 sigma^73 sigma^117 sigma^43;
        %       sigma^196 sigma^185 sigma^180 sigma^101 sigma^161 sigma^54 sigma^178;
         %      sigma^196 sigma^54 sigma^101 sigma^185 sigma^178 sigma^161 sigma^180];
               
    
    rank(Array_3)
    %Put Array in A-list format
    [n_vector,m_vector,n_length,m_length] = MatrixToAlist(Array_3);

    [m,m_max] = size(m_vector);
    [n,n_max] = size(n_vector);

    %for i=1:rows
    %   m_size(1,i) = m_max;
    %end

    %for j=1:columns
    %   n_size(1,j) = n_max;
    %end

    fpointer = fopen(output_file,'w');
    fprintf(fpointer,'%d %d \n',n,m);
    fprintf(fpointer,'%d %d \n',n_max,m_max);

    for i=1:n
        fprintf(fpointer,'%d ',n_length(1,i));
    end
    fprintf(fpointer,'\n');

    for i=1:m
        fprintf(fpointer,'%d ',m_length(1,i));
    end
    fprintf(fpointer,'\n');

    %print n_vector

    for i = 1:n
        for j = 1:n_length(1,i)
            fprintf(fpointer,'%d ',n_vector(i,j));
        end
        fprintf(fpointer,'\n');
    end


    %print m_vector
    for i = 1:m
        for j = 1:m_length(1,i)
            fprintf(fpointer,'%d ',m_vector(i,j));
        end
        fprintf(fpointer,'\n');
    end

    fprintf(fpointer,'\n');


    fclose(fpointer);



    %dlmwrite('m_size.txt',m_size,' ',0,0);
    %dlmwrite('n_size.txt',n_size,' ',0,0);
    %dlmwrite('n_vector.txt',n_vector,' ',0,0);
    %dlmwrite('m_vector.txt',m_vector,' ',0,0);

else
    Array = -1;
end





⌨️ 快捷键说明

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