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

📄 turbocoding_su2.m

📁 本程序主要完成Turbo码的编码和解码
💻 M
字号:
function Data_source1 = TurboCoding_SU2(input_data,Nt,bit,NumOfControl_inf,crc_flag,rate)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数功能:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%NumOfControl_inf指代控制信息占用比特数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  第一步  %%%%%%%%%%%%%%%%%%%%%%%%%%%%
Num =length(input_data);
%进行CRC24A循环校验
if crc_flag ==1
   CRC24A = add_crc24a(input_data);%进行CRC24A循环校验
   CRC24A = logical(CRC24A);%使校验码类型转为logical型,减小占用的内存
   %将校验码添到源数据后面
   trans_block_CRC24A(1,1:Num) = input_data;    
   trans_block_CRC24A(1,Num+1:Num+24) = CRC24A;
else
   trans_block_CRC24A(1,1:Num) = input_data;%不进行CRC24A循环校验
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  第二步  %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%对trans_block_CRC24A内的bit流进行turbo编码
en_output = turbo_encode_sim(trans_block_CRC24A);
%速率匹配(凿孔)
[y1,y2] = punctured_SU2(en_output,rate,bit);
%交织
trans_inf1(:,:)= inter_leaver2st(y1);
trans_inf2(:,:)= inter_leaver2st(y2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  第三步  %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%产生控制数据
control_block(:,:) = randn(1,NumOfControl_inf)>0;%产生控制数据NumOfControl_inf个
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  第四步  %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%控制数据 和 源数据 结合
trans1 = [control_block trans_inf1];
trans2 = [control_block trans_inf2];
%将数据分给Nt根天线并调制
LL = length(trans1);
for NumOfTx = 1:Nt
    Bit_source1(NumOfTx,:) = trans1(1,(NumOfTx-1)*LL/Nt+1:(NumOfTx-1)*LL/Nt+LL/Nt);
    Bit_source2(NumOfTx,:) = trans2(1,(NumOfTx-1)*LL/Nt+1:(NumOfTx-1)*LL/Nt+LL/Nt);
end
for NumOfTx = 1:Nt 
    Data_source(NumOfTx,:,1)=modulation(Bit_source1(NumOfTx,:),bit);
    Data_source(NumOfTx,:,2)=modulation(Bit_source2(NumOfTx,:),bit);
end
Data_source1(:,:)=Data_source(1,:,:);

⌨️ 快捷键说明

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