📄 deinterleave_siso_20.m
字号:
function dout=deinterleave_siso_20(din, Mode)
%----------------------------------------------------------------------
% deinterleaver
%
% Mode Data_rate Coding_rate BPSC CBPS DBPS
% 1 13(Mbps) 1/2 2 104 52
% 2 19.5 3/4 2 104 78
% 3 26 1/2 4 208 104
% 4 39 3/4 4 208 156
% 6 58.5 3/4 6 312 234
% 7 65 5/6 6 312 260
%
% ex. deinter_dat = deinterleave_siso_20(din,Mode)
%----------------------------------------------------------------------
switch Mode
case 1
rate = 1/2;
bpsc = 2;
dbps = 52;
case 2
rate = 3/4;
bpsc = 2;
dbps = 78;
case 3
rate = 1/2;
bpsc = 4;
dbps = 104;
case 4
rate = 3/4;
bpsc = 4;
dbps = 156;
case 6
rate = 3/4;
bpsc = 6;
dbps = 234;
case 7
rate = 5/6;
bpsc = 6;
dbps = 260;
end
cbps = dbps/rate;
Nss = 1; % No. of space stream
Nrot = 11; % 40MHz:29 20MHz:11
Ncol = 13; % 40MHz:18 20MHz:13
Nrow = 4*bpsc; % 40MHz:6*bpsc 20MHz:4*bpsc
cbpss = cbps/Nss;
Coded_add = [0:cbpss-1];
for iss = 0:Nss-1
for i=1:cbpss
first_inter(iss+1, i) = mod(Coded_add(i) + (mod(iss*2,3) + 3*floor(iss/3)) * Nrot * bpsc,cbpss);
end
end
s=max((bpsc/2),1);
for i=1:cbpss
second_inter(:, i) = s * floor(first_inter(:, i)/s) + mod( (first_inter(:, i) + floor(Ncol * first_inter(:, i) ./ cbpss )) , s);
end
for i=1:cbpss
last_inter(:, i) = Ncol * second_inter(:, i) -(cbpss-1).*floor(second_inter(:, i)/Nrow);
end
for iss = 1:Nss
for i=1:cbpss
dout(iss, i, :) = din(iss, last_inter(iss, i)+1, :);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -