decode_log.m

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

M
54
字号
function [c,iter_num] = decode_log( ChannelData,  ChannelFactor, H, maxiter)

LLR = ChannelData*ChannelFactor;

[m n] = size(H);

for j=1:n
    index_col = find(H(:,j));
    Q(index_col,j) = LLR(j);    % 初始化
end

for iter=1:maxiter
    for i=1:m
      index_row = find(H(i,:)); 
      alpha = sign( Q(i,index_row) );     % ????????????? -1
      beta0 = abs( Q(i,index_row) );
      for j=1:length(index_row)
          beta(j) = F(beta0(j));
      end
      ALPHA = prod( alpha );   %按列求积
      BETA0 = sum( beta );
      BETA = BETA0-beta;
      for j=1:length(index_row)
          R(i,index_row(j)) = ALPHA*alpha(j)*F(BETA(j));    %???????????? -1
          if (R(i,index_row(j))<-30)        
              R(i,index_row(j)) = -30;
          end
      end
    end
    for j=1:n
      index_col = find(H(:,j));
      r(j) = sum( R( index_col,j ) );
      q(j) = LLR(j)+r(j);
      Q(index_col,j) = q(j)-R( index_col,j );
      for a=1:length(index_col)
          if (Q(index_col(a),j)<-30)
              Q(index_col(a),j) = -30;
          end
      end
    end
    
    for j=1:n
        if( q(j) < 0 )
            c(j) = 1;
        else c(j) = 0;
        end
    end
    
    if (sum( mod(c*H',2) )==0)
        iter_num = iter;
        break;
    end
    iter_num = iter;
end

⌨️ 快捷键说明

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