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