www.pudn.com > interleaver.rar > interleaver.m


function source_out=interleaver(source_in) 
%rem是求余数 
%按列写,按行读 
 
 
global  INTERLEAVERLENGTH 
 
len=length(source_in); 
 
cols=fix((len -1)/INTERLEAVERLENGTH) + 1; %一帧转成列矩阵后的列数 
theLastRowOfLastCol= rem( len -1 ,INTERLEAVERLENGTH) +1;  %最后一列的最后一行 
 
for n=1:len         
    theCol=fix((n-1)/INTERLEAVERLENGTH) +1 ; 
    theRow=rem(n-1,INTERLEAVERLENGTH) +1; 
    if theRow>theLastRowOfLastCol 
        index= theLastRowOfLastCol * cols  + (theRow - theLastRowOfLastCol -1) * (cols-1) + theCol; 
    else 
        index=(theRow -1) * cols + theCol; 
    end 
    source_out(index)= source_in(n); 
end