📄 de_interleave.m
字号:
function data_deinterleaved_hex=de_interleave(input_data_hex)
%%%%函数功能:输入交织后的16进制数,输出解交织后的16进制数
%%首先,判断是那种调制方式,以便确定解交织中的参数N_cps, N_cbps的值
data_length=length(input_data_hex);
if data_length==48 %%表明是BPSK调制方式
N_cps=1; N_cbps=192;
elseif data_length==96 %%表明是QPSK调制方式
N_cps=2; N_cbps=384;
elseif data_length==192 %%表明是16QAM调制方式
N_cps=4; N_cbps=768;
end
%%%%%将输入的16进制数变为2进制
binary_input=[]; %%将输入的16进制数变为二进制数
for i=1:length(input_data_hex)
b1=input_data_hex(i);
b2=hex2dec(b1);
b3=dec2bin(b2,4);%%注意:4表示一位16进制数转换为4位2进制数\
b4=[];
for j=1:4
b4=str2num(b3(j));
binary_input=[binary_input b4];
end
end
%%%计算解交织后的顺序
s=ceil(N_cps/2);
for k=0:(N_cbps-1)
a=j+floor(12*k/N_cbps);
mm(k+1)=s*floor(k/s)+mod(a,s);
kk(k+1)=12*mm(k+1)-(N_cbps-1)*floor(12*mm(k+1)/N_cbps);
end
for i=1:N_cbps
mm(i)=mm(i)+1;
kk(i)=kk(i)+1;
end
for i=1:N_cbps
binary_input_deinterleaved(kk(i))= binary_input(i);
end
%%%%%将解交织后的二进制数据转换为16进制,以便于观察正确与否
L=length( binary_input_deinterleaved);
tt=L/4;
msgtemp=reshape(binary_input_deinterleaved,4,tt);
msgtemp=msgtemp';
for i=1:tt %%for循环将卷积编码后得到的二进制数组转换为16进制数
array=msgtemp(i,:);
str = num2str(array);
dec=bin2dec(str);
data_deinterleaved_hex(i)=dec2hex(dec);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -