www.pudn.com > RS.rar > Golay_decoder.m


function  [decoder_data]=Golay_decoder(dsource) 
 
B=[1 1 0 1 1 1 0 0 0 1 0 1;                  
   1 0 1 1 1 0 0 0 1 0 1 1; 
   0 1 1 1 0 0 0 1 0 1 1 1; 
   1 1 1 0 0 0 1 0 1 1 0 1; 
   1 1 0 0 0 1 0 1 1 0 1 1; 
   1 0 0 0 1 0 1 1 0 1 1 1; 
   0 0 0 1 0 1 1 0 1 1 1 1; 
   0 0 1 0 1 1 0 1 1 1 0 1; 
   0 1 0 1 1 0 1 1 1 0 0 1; 
   1 0 1 1 0 1 1 1 0 0 0 1; 
   0 1 1 0 1 1 1 0 0 0 1 1; 
   1 1 1 1 1 1 1 1 1 1 1 0];   
I=eye(12); 
H=[B;I];   
 
ei=zeros(1,12); 
s=rem(dsource*H,2); 
o=zeros(1,12); 
u=zeros(1,24); 
if (sum(s(1,:)))<=3 
    u=u+[s,o];  
else  
    for i=1:12 
        c=rem(s+B(i,:),2); 
        if(sum(c(1,:)))<=2 
            ei(i)=ei(i)+1; 
            u=u+[s+B(i,:),ei]; 
        end 
    end    
end 
if(sum(s*B))<=3 
    u=u+[o,s*B]; 
else 
    for i=1:12 
        c=rem(s*B+B(i,:),2); 
        if (sum(c(1,:)))<=2 
            ei(i)=ei(i)+1; 
            u=u+[ei,s*B+B(i,:)]; 
        end 
    end 
end 
    decoder_data=mod(u+dsource,2);