bit_interleaver.m

来自「基于EMCA368国际标准的物理层超宽带协议的基本仿真程序,都是自己编写的」· M 代码 · 共 79 行

M
79
字号
function [out]=Bit_interleaver(datain,length,rate);
if (isequal(rate,[0 0 0 0 0]))
    Ntds=2;
    Ncbps=100;
    Ntint=10;
    Ncyc=33;
    Ncbp6s=300;
    Nibp6s=100;
elseif(isequal(rate,[0 0 0 0 1]))
    Ntds=2;
    Ncbps=100;
    Ntint=10;
    Ncyc=33;
    Ncbp6s=300;
    Nibp6s=150;
elseif(isequal(rate,[0 0 0 1 0]))
    Ntds=2;
    Ncbps=200;
    Ntint=20;
    Ncyc=66;
    Ncbp6s=600;
    Nibp6s=200;
elseif(isequal(rate,[0 0 0 1 1]))
    Ntds=2;
    Ncbps=200;
    Ntint=20;
    Ncyc=66;
    Ncbp6s=600;
    Nibp6s=300;
elseif(isequal(rate,[0 0 1 0 0]))
    Ntds=2;
    Ncbps=200;
    Ntint=20;
    Ncyc=66;
    Ncbp6s=600;
    Nibp6s=375;
elseif(isequal(rate,[0 0 1 0 1]))
    Ntds=1;
    Ncbps=200;
    Ntint=20;
    Ncyc=33;
    Ncbp6s=1200;
    Nibp6s=600;
elseif(isequal(rate,[0 0 1 1 0]))
    Ntds=1;
    Ncbps=200;
    Ntint=20;
    Ncyc=33;
    Ncbp6s=1200;
    Nibp6s=750;
elseif(isequal(rate,[0 0 1 1 1]))
    Ntds=1;
    Ncbps=200;
    Ntint=20;
    Ncyc=33;
    Ncbp6s=1200;
    Nibp6s=900;
end
for i=1:(length/Ncbp6s)
    for j=1:Ncbp6s
        as((i-1)*Ncbp6s+j)=datain((i-1)*Ncbp6s+floor((j-1)/Ncbps)+(6/Ntds)*mod((j-1),Ncbps)+1);
    end
end

for i=1:(length/Ncbps)
    for j=1:Ncbps
        at((i-1)*Ncbps+j)=as((i-1)*Ncbps+floor((j-1)/Ntint)+10*mod((j-1),Ntint)+1);
    end
end

for i=1:(length/Ncbp6s)
    for j=1:Ncbp6s
        b((i-1)*Ncbp6s+j)=at((i-1)*Ncbp6s+(floor((j-1)/Ncbps))*Ncbps+mod(((j-1)+(floor((j-1)/Ncbps))*Ncyc),Ncbps)+1);
    end
end
out=b;
    
   

⌨️ 快捷键说明

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