gusucode.com > ​BCH 编解码的MATLAB 实现源码程序 > code/bch/correctcode.m

    function[bch]=correctcode(data,G,HT)

k=0;
 for i=1:15
        if  data(i)==1
             k=i;
            break
        end
 end
 
g=circshift(G,[0 k-1]);

g1=g;
c=data;

for n=1:15
    c=xor(c,g1);
   
    h=0;
    for i=1:15
        if c(i)==0
             h=h+1;
        end
    end
    
    if h==15
        break
    end
    
    g1=G;
    for i=1:15
        if c(i)==1
             kk=i;
             break
        end
    end
   if  kk>11
       break
   end
    g1=circshift(g1,[0 kk-1]);
end

k1=0;
 for i=1:15
        if c(i)==1
             k1=k1+1;
        end
 end
 
 if k1==0
     bch=data;
 else
     for i=1:4
         s(i)=c(11+i);
     end
     for j=1:15
           ht(j,:)=xor(s,HT(j,:));
           k2=0;
           for  i=1:4; 
                if ht(j,i)==0
                    k2=k2+1;
                end
                if k2==4
                    k3=j;
                    break
                end
           end
     end
     for i=1:15
         e(i)=0;
     end
     e(k3)=1;
     bch=xor(data,e);
 end