Code covered by the BSD License  

Highlights from
Turbo Code

image thumbnail

Turbo Code

by

 

11 Dec 2012 (Updated )

Encoding: RSC, Decoding: BCJR

[ALPHA]=alpha_1(GAMMA,N)
%This function calculates ALPHA probabilities at each stage for all states,
%using GAMMA probabilities obtained previously. Uses recursion formula for
%ALPHA to calculate it for the next stage. Each column is for states 00,10,01
%and 11 respectively. As we move forward in the block ALPHA will become very
%less, as the 1st term corresponding to gamma can be very less(of the order 
%of 10^(-15)). Hence ALPHA will keep on decreasing and  will become very small. 
%After some stages it will become exactly 0. So to avoid that we can
%multiply each ALPHA by 10^(-20) at a stage where they all become less than 
%10^(-20). As we need APLHA in calculation of LAPPR. So scaling wont affect the ratio

function [ALPHA]=alpha_1(GAMMA,N)

    ALPHA=zeros(4,N);

    %Initialization of alpha assuming first state to be 00
    ALPHA(1,1)=1;ALPHA(2,1)=0;ALPHA(3,1)=0;ALPHA(4,1)=0;
    
    j=1;
    for i=2:N
        ALPHA(1,i)=((GAMMA(1,j)*ALPHA(1,i-1))+(GAMMA(3,j+1)*ALPHA(3,i-1)));
        ALPHA(2,i)=((GAMMA(3,j)*ALPHA(3,i-1))+(GAMMA(1,j+1)*ALPHA(1,i-1)));
        ALPHA(3,i)=((GAMMA(2,j)*ALPHA(2,i-1))+(GAMMA(4,j+1)*ALPHA(4,i-1)));
        ALPHA(4,i)=((GAMMA(4,j)*ALPHA(4,i-1))+(GAMMA(2,j+1)*ALPHA(2,i-1)));
        j=j+2;
        
        if (ALPHA(1,i)<10^(-20) && ALPHA(2,i)<10^(-20) &&...
                ALPHA(3,i)<10^(-20) && ALPHA(4,i)<10^(-20) )
            ALPHA(:,i)=10^(20)*ALPHA(:,i);   %Scaling Alpha if became very less  
        end    
    end

end

Contact us