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


function source_out=uninterleaver(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 
    if n> cols * theLastRowOfLastCol 
        theRow=theLastRowOfLastCol + fix((n - cols * theLastRowOfLastCol -1)/(cols -1)) +1; 
        theCol=rem(n- cols * theLastRowOfLastCol -1 ,cols -1 ) +1 ; 
    else 
        theRow=fix((n-1)/cols) +1; 
        theCol=rem(n-1,cols) +1; 
    end 
    source_out((theCol-1)*INTERLEAVERLENGTH + theRow)= source_in( n); 
end