📄 bit_interleaving.m
字号:
function [v]=bit_interleaving(c_e,d_r)
% bits=randint(1,1050);
% ts=poly2trellis(7,[133 165 171]);
% punctcode=convenc(bits,ts,[1 0 1]);
% 分组交织
% s=randint(1,10)
% pattern=randperm(10)
% r=intrlv(s,pattern)
% rs=deintrlv(r,pattern)
% 符号交织
% Ncbps=200;
% c_e=randint(1,4200);
% d_r=200e6;
if d_r==55e6||d_r==80e6
TSF=2;
Ncbps=100;
elseif d_r==110e6||d_r==160e6||d_r==200e6
TSF=2;
Ncbps=200;
elseif d_r==320e6||d_r==400e6||d_r==480e6
TSF=1;
Ncbps=200;
end
N1=(6/TSF)*Ncbps;
n1=length(c_e)/(N1); % number of blocks divided
% s=zeros(1,n1*N1); % zero padding
% s(1:length(punctcode))=punctcode;
for m1=1:n1
p=(1+(m1-1)*N1):(N1+(m1-1)*N1);
b1=c_e(p);
for i=0:(N1-1)
u1(i+1)=b1(floor(i/Ncbps)+(6/TSF)*mod(i,Ncbps)+1);
end
v1(p)=u1;
end
% tone交织
N2=Ncbps/10;
n2=length(v1)/Ncbps;
for m2=1:n2
q=(1+(m2-1)*Ncbps):(Ncbps+(m2-1)*Ncbps);
b2=v1(q);
for j=0:(Ncbps-1)
u2(j+1)=b2(floor(j/N2)+10*mod(j,N2)+1);
end
v2(q)=u2;
end
% cyclic shifts
n3=length(v2)/(N1);
for m3=1:n3
r1=(1+(m3-1)*N1):(N1+(m3-1)*N1);
b3=v2(r1);
if d_r==320e6||d_r==400e6||d_r==480e6
for k1=0:5
r2=(1+k1*Ncbps):(Ncbps+k1*Ncbps);
b4=b3(r2);
a(k1+1)=k1*33;
for k2=0:(Ncbps-1)
u3(k2+1)=b4((mod(k2+a(k1+1),Ncbps))+1);
end
v31(r2)=u3;
end
v(r1)=v31;
elseif d_r==110e6||d_r==160e6||d_r==200e6
for k1=0:2
r2=(1+k1*Ncbps):(Ncbps+k1*Ncbps);
b4=b3(r2);
a(k1+1)=k1*66;
for k2=0:(Ncbps-1)
u3(k2+1)=b4((mod(k2+a(k1+1),Ncbps))+1);
end
v32(r2)=u3;
end
v(r1)=v32;
elseif d_r==55e6||d_r==80e6
for k1=0:2
r2=(1+k1*Ncbps):(Ncbps+k1*Ncbps);
b4=b3(r2);
a(k1+1)=k1*33;
for k2=0:(Ncbps-1)
u3(k2+1)=b4((mod(k2+a(k1+1),Ncbps))+1);
end
v33(r2)=u3;
end
v(r1)=v33;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -