ctcinterleaver.m

来自「传统的卷积码和Turbo码直到今天仍有广泛的应用」· M 代码 · 共 35 行

M
35
字号
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

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?