• 大小: 14KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: 其他
  • 标签: LDPC  802.16e  matlab  

资源简介

有完整的主程序和子程序,每个程序有详细的代码注释,可以仿真出来802.16e标准不同码长的LDPC编码实现方式,有借鉴意义。

资源截图

代码片段和文件信息

function vHat = decodeLogDomain(rx H N0 iteration)
% Log-domain sum product algorithm LDPC decoder
%
%  rx        : Received signal vector (column vector)
%  H         : LDPC matrix
%  N0        : Noise variance
%  iteration : Number of iteration
%
%  vHat      : Decoded vector (0/1) 
%
%
% Copyright Bagawan S. Nugroho 2007 
% http://bsnugroho.googlepages.com

[M N] = size(H);

% Prior log-likelihood. Minus sign is used for 0/1 to -1/+1 mapping
% Lci = p0/p1
Lci = (-4*rx./N0)‘;

% Initialization
Lrji = zeros(M N);
Pibetaij = zeros(M N);

% Asscociate the L(ci) matrix with non-zero elements of H
Lqij = H.*repmat(Lci M 1);
 
% Get non-zero elements
[r c] = find(H);

% Iteration
for n = 1:iteration
   
   fprintf(‘Iteration : %d\n‘ n);
   
   % Get the sign and magnitude of L(qij)   
   alphaij = sign(Lqij);   
   betaij = abs(Lqij);

   for l = 1:length(r)
      Pibetaij(r(l) c(l)) = log((exp(betaij(r(l) c(l))) + 1)/...
                             (exp(betaij(r(l) c(l))) - 1));
   end
   
   % ----- Horizontal step -----rji for j
   for i = 1:M
      
      % Find non-zeros in the column
      c1 = find(H(i :));
      
      % Get the summation of Pi(betaij))        
      for k = 1:length(c1)

         sumOfPibetaij = 0;
         prodOfalphaij = 1;
         
         % Summation of Pi(betaij)\c1(k)
         sumOfPibetaij = sum(Pibetaij(i c1)) - Pibetaij(i c1(k));
         
         % Avoid division by zero/very small number get Pi(sum(Pi(betaij)))
         if sumOfPibetaij < 1e-20
            sumOfPibetaij = 1e-10;
         end         
         PiSumOfPibetaij = log((exp(sumOfPibetaij) + 1)/(exp(sumOfPibetaij) - 1));
      
         % Multiplication of alphaij\c1(k) (use ‘*‘ since alphaij are -1/1s)
         prodOfalphaij = prod(alphaij(i c1))*alphaij(i c1(k));
         
         % Update L(rji)
         Lrji(i c1(k)) = prodOfalphaij*PiSumOfPibetaij;
         
      end % for k
      
   end % for i

   % ------ Vertical step ------qji for i
   for j = 1:N

      % Find non-zero in the row
      r1 = find(H(: j));
      
      for k = 1:length(r1)        
        
         % Update L(qij) by summation of L(rij)\r1(k)
         Lqij(r1(k) j) = Lci(j) + sum(Lrji(r1 j)) - Lrji(r1(k) j);
      
      end % for k
      
      % Get L(Qi)
      LQi = Lci(j) + sum(Lrji(r1 j));
      
      % Decode L(Qi)
      if LQi < 0
         vHat(j) = 1;
      else
         vHat(j) = 0;
      end
                       
   end % for j
   
end % for n

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-31 19:59  LDPC_802.16e仿真代码\
     文件        2604  2016-04-27 14:24  LDPC_802.16e仿真代码\decodeLogDomain.m
     文件        2039  2016-06-17 16:26  LDPC_802.16e仿真代码\decodeLogDomainSimple.m
     文件        2465  2016-06-16 20:21  LDPC_802.16e仿真代码\decodeProbDomain.m
     文件        1877  2016-06-07 21:53  LDPC_802.16e仿真代码\FPGA_data_test.m
     文件        1846  2016-06-24 15:27  LDPC_802.16e仿真代码\fpga_test.m
     文件         533  2016-06-12 15:12  LDPC_802.16e仿真代码\huizong.m
     文件        2160  2016-06-17 15:27  LDPC_802.16e仿真代码\IEEE_encode.m
     文件        3133  2016-06-17 15:16  LDPC_802.16e仿真代码\IEEE_ldpc.m
     文件        2099  2016-03-23 16:26  LDPC_802.16e仿真代码\ldpc_decode.m
     文件        2084  2016-06-12 08:18  LDPC_802.16e仿真代码\Ldpc_Prob.m
     文件        2077  2016-06-16 21:03  LDPC_802.16e仿真代码\LDPC_Sum_Product.m
     文件        1460  2016-05-13 08:23  LDPC_802.16e仿真代码\lianghua.m
     文件         391  2016-06-17 15:26  LDPC_802.16e仿真代码\matrix_permutation_sparse.m
     文件        1739  2016-05-23 13:38  LDPC_802.16e仿真代码\minmum.m
     文件        1561  2016-04-28 15:27  LDPC_802.16e仿真代码\m_xulie.m

评论

共有 条评论