⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 de_interleave.m

📁 关于解交织的MATLAB程序
💻 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 + -