www.pudn.com > ctc-matlab.rar > CtcInterleaver.m, change:2005-03-21,size:684b


function alpha=CtcInterleaver(data) 
%return interleave pattern 
leng=length(data); 
%首先给alpha赋值为1:leng的整数作为原始下标 
alpha=1:leng; 
N=leng/2; 
if N==96 
    p0=7; 
elseif N==128|N==192 
    p0=11; 
elseif N==288 
    p0=13; 
elseif N==144|N==384|N==432 
    p0=17; 
end 
p1=3*N/4; 
A=alpha(1:2:end); 
B=alpha(2:2:end); 
%交织方法参见802.16d中ctc内交织器介绍一节 
for j=1:N 
    if mod(j,4)==0|mod(j,4)==1 
        i=mod(p0*j+1,N); 
    elseif mod(j,4)==2 
        i=mod(p0*j+1+N/4,N); 
    else 
        i=mod(p0*j+1+N/2+p1,N); 
    end 
    i=i+1; 
    if mod(j,2)==1 
        alpha(2*i-1:2*i)=[A(j),B(j)]; 
    else 
        alpha(2*i-1:2*i)=[B(j),A(j)]; 
    end 
end