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